Nine times out of ten when you call companies like this you're never speaking with someone who is sitting in an actual building owned by that company. They normally hire other companies, sometimes not even in the states, to answer their customer calls.
It's not really correct to say that they "normally" hire contractors. It is more correct to say that support is typically provided by a mix of both employees and third-party vendors located in the U.S. or abroad. How much is domestic vs. foreign and how much is regular, full- or part-time employees vs. contracted, third-party vendors just depends on the company.
Foreign contractors are perfectly capable of providing excellent service if the company that hired them is willing to pay for the training and supervision necessary to create excellent service. Of course, the same thing applies to domestic, regular employees. No one is going to provide you with good service unless the company provides the call center staffers with the training, coaching and feedback necessary to do a superior job. If a company wants its vendors to do a bunch of training and provide a bunch of coaching, the company has to pay the vendor for that. Doing a first-rate job is always more costly than doing a third-rate job.
Who you get (foreign vs. domestic, employee vs. vendor) depends on a bunch of factors: Weekday vs. weekend. "Normal" business hours vs. late night. English vs. Spanish. Retail customer vs. wholesale customer. Large business account with thousands of lines vs. individual consumer/family account. Each company has its own complex call-routing rules based on factors like those above.
If you get bad service, its not because the call center employee is a foreigner and/or employed by a third-party vendor, its because the company that outsourced its call center work chose to do it on the cheap. If a cheap company brought that work back to the U.S. and hired employees, the service would still be bad.