The standard answer is that there are not enough Americans with the skills they need willing to work for the wages they'd like to pay. Ideally (for employees) the inability to hire people at salary X would be a market signal that employers need to offer more money. The H1-B program is designed not to interfere with that signal, but it's widely believed that companies give lip service to the law and hire cheaper workers anyways.