I don't think this is a fair assumption. The work is going to be defined by the client... so if the client wants .Net 3.0 experts to maintain a legacy system, then that's what they are going to get. I have worked for and with Indian IT firms (I'm not Indian myself) and in most cases the directive is to use latest standards and best practices. In my case it has to do with cloud architectures. Outsourcing is something that still needs onsite experts that can help guide the project and critique/review what is being developed. Clients that are mostly hands off during the development are inevitably going to have significant struggles.
I pretty much agree with you, if the client doesn't have any in-house expertise and stays hands-off then you get the scenario I described but outsourcing can work if it's in addition to in-house expertise.
In this case the client didn't want .Net 3.0 experts to support a legacy app, that's what the consultants built it in and then let it turn into legacy by not performing regular maintenance.
The client didn't know that it was becoming legacy until it was too late because they never developed the in-house expertise to understand what was necessary and the consultants have no incentive to do it by themselves. In fact they can charge more by letting it rot and requiring development of a whole new project to replace the legacy.