Most of the time, folks aren't H1B. Or if they are, it's a handful of local H1B and the rest are in India.
Here's how outsourcing works, most of the time. Say 80% of the time. First, the sales folks troll for stupid executives or bid on domestic contracting opportunities. They submit bids at 50-80% of the existing contract cost. Sometimes this is actually at a loss, no one could possibly fulfill the contract at that cost. They line up their top tier talent, showing off their people with X years of experience, credentials out the wazoo, you name it. They land the bid. Generally they actually follow through with integration and transition. First six months has extra staff attached at no extra cost or cost hidden into integration. Things are rough, but the outsourcing place tries to smooth things out.
After the honeymoon is over, those top tier talent folks are moved onto the next contract they're trying to win. They're replaced with mid-tier talent if you're lucky, anybody with a pulse if you're not. Those extra staff are cut. Lead times shoot up. Anything not in the contract is not done. The outsourcers start telling the company folks that anything not in the contract is extra, charged at hourly rates that'd give any accountant a nosebleed. It's out of scope, and you fired all of your non-management personnel so you pay the out of scope rates because you're bent over the table. SLAs are handled by India staff focusing on closing the tickets rather than resolve the issue.
The slick places have an "executive" help desk or contact. So that the brass never actually see any of the problems and think the employees are embellishing problems with the outsourced staff.
From here, it varies. Some places do an honest job and fulfill the contract. Rarely greatly. Loads of communication problems, slow response, etc. Other places are more dishonest and service is pretty bad. Unless the company pays more.
Yes, I have a vested interest in saying outsourcing is terrible, but I've rarely seen outsourcing entire departments go well. This isn't strictly to India either. UTC outsourced huge chunks of their IT to a company called CSC, which robbed them blind while providing terrible service. I saw Deloitte outsource their global network operations center to India. Before we left, Indian techs had caused more damage than about ten years of salary savings.
I've seen it go well to outsource specific tasks to specific contractors. Some stuff is pretty specialized. Obscure programming languages, specific hardware or specific software. SharePoint I wouldn't recommend running locally unless you have a very expensive expert inhouse. Even then. It makes sense to have contractors for legacy systems that you don't rely on, but want to keep around for archival purposes.