H1-B and Outsourcing to offshore are two completely different things. As outsourcing means hand part of a job to contactor firm which could either be local or foreign. Foreign contracting firm don't need visas, and local contracting firm can either hire Americans or sponsor visas.
The real problem is that a foreign worker should not get paid less doing the same job American do. That will kill the incentive and it's also very inhumane and racist to pay less for the same work based just on citizenship.