Some parts have shortages and others have a glut. Efforts to solve the shortages often exacerbate the glut leading to resentment and accusations that employers are being dishonest about the shortage.
The whole H1B visa thing always bothered me as an engineer because it seemed pretty obvious it was depressing my wages. Later on in my career I became a manager responsible for hiring and managing engineers. It turns out there is some truth to both sides of this argument. Partially because of immigration and H1B visas there are plenty of medium-skilled engineers to be had. For every opening I have looked to fill there have been plenty of medium-skilled candidates who can be had at just about any price you want to pay (thus they are depressing wages). Highly skilled candidates are very rare, even when you go into the search planning to spend well over 100k.
The problem is that when you manage engineers you quickly realize that a highly-skilled engineer is often worth 10 medium-skilled engineers, and more importantly, can accomplish the tasks that no amount of medium-skilled engineers could ever manage. That's not to say that there isn't a place for medium-skilled engineers. It often works well to have a few highly-skilled engineers on a team with a bunch of medium-skilled engineers. The highly-skilled ones figure out strategy, solve the really hard problems, and provide a skeleton structure for the project that provides the medium-skilled engineers with bite-sized tasks they can accomplish on their own. However, without the highly-skilled engineers you are doomed to failure. It is also imperative that the highly skilled engineers have subject matter expertise in whatever you are working on. There has to be a 'trainer' before you can do any training, and having a team where no one knows anything about what they need to work on is a recipe for failure.
Startups have a particular need for highly-skilled engineers. In a new company there is no structure and only the high-level plan of what needs to be done. In this environment you need almost all highly-skilled engineers with domain-specific knowledge on the team to get the first product ready. No amount of medium-skilled engineers will let you accomplish this. Likewise hiring a bunch of super bright engineers whose background experience is in designing long distance power lines is probably not going to be a winning combination if you are trying to build a revolutionary new scalable map-reduce mega server cluster. They will take years learning the skills needed and rediscovering the mistakes that someone with domain experience would already know to avoid.
It is very important to understand that "highly-skilled" is not closely correlated to schooling by the way - I have met plenty of medium-skilled engineers with master's degrees (and evenPhD's). I have also seen great engineers with only bachelors degrees. (It is worth noting here that there is still some correlation between schooling and skill - there is a greater concentration of highly-skilled engineers with PhDs that I have worked with then among those with only their B.S.). Experience is only loosely correlated as well. You can spot the really good engineers pretty early in their careers. This doesn't mean that an inexperienced but highly talented engineer is worth as much as one with experience and talent, but it does mean that within a few years out of school they are often worth more then the experienced medium-skilled engineer.
Bottom line: the US would be far better off if we could get more highly-skilled engineers. There are so many opportunities (and potential new jobs for all the supporting staff and medium-skilled engineers) that companies (including mine right now) simply cannot pursue because there are not enough of these individuals to staff the efforts. The problem is that there is really no effective way to get these individuals without letting in a lot of additional medium-skilled engineers into the country.
Another way to think of it is this: if you could put all of the people in the world who fell into the top 5% of intelligence into a stadium how many of them would be American?
Answer: not that many (if they were equally distributed it would be only 300m / 7b = 4.2%). If very intelligent people are disproportionately located in America due to some self-selection process it might be as high as 8%. In either case there is much to be gained from letting more of the 96% of people in the top bracket of intelligence into the country.