Sadly as the person that over the past 25 years in IT that provides support for both development and production applications and systems, I have seen what outsourcing produces.
A few of the big draw backs to outsourcing regardless of the quality of the developer/support is:
1. Lack of the business knowledge. Most outsource companies lack the particular knowledge of the business they work for. Overtime it can be acquired, but depending upon the complexity of the business that can take years. This assumes that the outsource keeps the same core people the entire time on that one customer account.
2. Lack of the business communication skills. Much is lost when you deal 90% of the time with emails and IM chats, its very hard to pick up the nuances that face to face communication can convey. I can not count the number of times contractors are ask if they understand the issue, and they reply they do, when they don't understand the issue, when the mean they heard you.
3. Cost of outsourcing. It is a huge hidden cost. In my 25 years of dealing with outsource contracts both as part of the support infrastructure and as a project manager of a large conversion project. While no project of a large scale will always be done perfectly (there are exceptions of course). I have been involve in probably 2 dozen over my career. Those done in house tend to have fewer long term costs (rewrite, training, support) then outsource. The reason is simple, they have a vest interest in doing it right.
Outsource contractors are strictly there for the money, the longer and more problematically it becomes the more money. If the project is not nixed early enough, most companies executives will be reluctant to cancel it for fear of repercussions (ie being fired), so will often pour more money and double down. It will take on a life of its own, until either the management changes or the company can no longer hide its screw up.
Now are there cases where outsourcing is a good idea, absolutely. If the companies projects are not in their skill wheelhouse, then a carefully managed project with onsite contractors are great options. If it's offshore, the contract with specific deliverables, penalties and periodic onsite meetings as part of the deal work well too.