You make a good point …. but not all OO languages have interfaces. Singleton problems aside (which apply to all the OO languages that I can think of), and I know you are restricting your arguments to .net (applicable to Java too) but what about C++? You can mimic Interfaces in C++ but you use abstract parent classes to do it.
So I have another question for you, how would you apply ‘favour composition over inheritance’ to .net MVC?