This is how it works.
Gamestop guesses the approximate number of copies of a game their locations will get. The further ouy from the release date there are, the more of an approximation this number is. The closer they get, the more of an idea they have.
Not every location will receive the same number of copies. Most of the time, the number of copies received depends on the number of preorders, plus, some excess.
With some exceedingly popular games such as Halo or Smash, no matter how many copies are sent, the odds are that it will still sell out, so what Gamestop does is hold every copy they receive for up to two days for those people who preordered. Filling those is priority one.
If you don't happen to get yours within those two days, you don't lose your money. When you go pick it up, you tell the employee you preordered it, and that money you put down still goes towards the purchase price.
It's not illegal to not fill a preorder on launch day if you don't have enough copies to go around. It's illegal to keep the money though if you don't pick it up right away. The money you put down on a game is still YOUR money.