Almost all successful software dev isn't about algorithms; it's business process engineering. If you don't understand how the business works now and how it needs to work in the future, your software will fail no matter how fast or cheap it's made.
Obviously business process design requires domain expertise but it really lives or dies on the presence of *outstanding* communication skills. If the actors don't exchange *all* the essential requirements and business dependencies, the deliverable will hit the wrong target. And the cost of failure is a lot higher than the savings from outsourcing.
This essential exchange of info is hampered badly by domain inexperience, distance, and latency between provider and consumer. Not only do comm skills enable focus on the desired goals, but also on the (many) unspoken needs and dependencies that often decide whether a deliverable actually plugs the big holes in the business' ship or the water pours through at will. I think US businesses have only discovered this recently (in the past decade) after many 'projects thrown over the ocean' have come back to haunt them as zombie projects (half dead creatures that suck the life out of you but somehow can't be killed). Until this need can be addressed internationally, the value of oursourcing forever will be limited.