I wouldn't say this is a case against outsourcing. This is an example of mis-management of the outsourcer and the project. Also, both parties are to blame in this one. Because the client customer did not watch closely enough what was going on, and the outsourcer because they did not provide the feedback (knowledge transfer and documentation) to the client.
The experience here in NZ from 5+ years of outsourcing is that companies should outsource computer operations and the coding & integration testing part of development, but keep the business analysts and application architects inhouse - the former do the requirements & acceptance testing, the latter specify the application high level design so you don't wind up with a lot of wildly technically-different applications.