I've also come to that conclusion after a number of years of freelancing, but I understand the other point of view as well.
While freelancing, especially for people in another country, it isn't uncommon for customers to just disappear without any trace (or pay) half-way through a project. As such, when confronted with some problem mid-project, finishing the job in a half-assed manner can be a way of ensuring you get paid. Of course, a better method is making sure you have a solid plan before agreeing to the job, and trying to avoid unreliable customers - but accomplishing this can be difficult in any setting, even non-freelancing.
On the customer side, making sure you have a number of reasonably sized milestones and pay for them immediately on delivery can help keep freelancers confident, and thus encourage better quality work.
Then management wonder why it failed.