This, just like IP spoofing is something that should be straightforward to correct. However, the carrier in both cases has incentives to continue allowing it (getting to charge for minutes, or bandwidth).
Instead, the carriers look at aggregate stats, and if it's too bad, they raise rates, charge fines, or disconnect customers. Some companies take a hard line and just cut any customer off if they appear to have any dialer. Others don't want to throw away an entire customer for only one fraction of the traffic. So everyone dances this line, trying to jam as much dialer in as they can get away with.