I personally worked for a company that almost exclusively hired H1B visa software engineers. The company does it because they can be paid less and they can't quit, if they lose their job, their visa is revoked immediately and they have less than 2 weeks to pack their stuff and leave the US! It doesn't make me proud to be an american. How about giving them a year to look for another job or to start their own business?
If the company they work for wants to, it can sponsor them for a green card, which will take 7 years to be processed (!!). Ridiculous, if your yearly visa is renewed more than once, it means you have proven yourself twice already, by being hired and by being renewed and you should be able to get a green card right away or accept any competing employment offers without needing the new company to sponsor you and pay thousands of dollars. This would make you less desirable and stifle competition.
Finally, the salary of an H1B holder should exceed the average salary for the position by a significant percentage to discourage employers from underpaying workers. H1B holders are supposed to be the best and brightest we can get, and they should be paid what they deserve.