I'd guess that sites that charge immediately are, for the most part, very small companies, so either the normal laws regarding mail-order sales don't apply (possible; I'm not a lawyer, but many regulations don't apply to businesses with fewer than fifty employees) or neither buyers nor the sellers are aware of their legal obligations. Also the law varies from state to state (and of course from country to country).
But there are very strong reasons why you should never be charged for a product until it has shipped. Most notably, it's protection against fraud.
But there are very strong reasons why you should never be charged for a product until it has shipped. Most notably, it's protection against fraud.