I worked under H1B and have switched several employers over time - it is doable, but it is not as easy as you think. If you find another employer before you are fired, and if that employer agrees to file the paperwork for H1B, then yes, you can "easily" switch jobs. I was working as a contractor for a company that wanted to hire me directly and even made me an offer, but it was too bad for them, since neither they nor their lawyer knew what to do and I ended up going somewhere else.
Also, you have 10 days to get out of the country after you are fired. However, these 10 days will still be counted as a gap in your legal status and in most cases you will have to leave the country to get a new H1B, i.e. you will be a the mercy of the immigration officer in your own country and even then officer at the border can refuse you the entry w/o an explanation.
As a Green Card holder or a Citizen, you can go to your boss and say "give me a raise or I quit", but as an H1B worker you are pretty much stuck with whatever pay was given to you. There are also legal tricks to make sure that you don't get the salary that company promised the government they will pay you.
After a while H1B holder would want to get a Green Card, but that is a long process that requires you to stick with your employer once documents are submitted. This creates another opportunity for employers to impose their will on you.
Current laws help companies to find cheaper labor at expense of Americans. Instead of raising caps, they should change laws, so that it is more costly to hire H1B workers, i.e. tax companies for each and every H1B and if they really need these workers they will have no problem paying the tax.