In many cases it’s because that’s what we demand of them. The “you get what you pay for” line works well here, we demand low cost so they have low time to build anything right. Long term impact is that they never fully developed into seasoned and deeply skilled staff. Then we complain about quality, its kind of funny in a sad way...
As a programmer in "other countries", you're very much wrong. You just get what you pay for, and when you're going for "cheap outsource" you get bottom of the barrel. Pay senior salaries, you get senior people.