I had an intense argument with someone about whether H1B's were good or bad for the economy. The key point he was arguing was that H1B employees do not have significantly less salary, and they are fully capable of switching companies.
In my experience, the primary reason that a company would go through the hassle of hiring an H1B is for cost reasons, because there are enough competent workers locally there to fulfill open positions (at a price), and the quality of H1B workers is generally less than local hires. On rare occasions a foreign worker has extremely unique skills, but this is certainly the exception.
Secondly, it is very difficult for an H1B to switch companies, as it's difficult to convince a company to go through the hassle of paperwork / lawyers / cost, so an H1B employee has little recourse for being treated poorly and paid less.
Therefore, I'm against H1B's. If we had a more reasonable immigration policy, where people could more easily come to America as normalized citizens, I would be for it. But the H1B and similar programs give far too much power to the companies, which is ripe for exploitation.