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).
I wouldn't say that carrier's have a large incentive. Dialer or robocall traffic is normally frowned upon in the telecom community. We charge per minute, and dialer traffic is the worst offender or taking up large amounts of resources, while providing very little minutes. To give you an idea, a typical robodialer user may have 30% of their calls answered, and an average call length of 16 seconds. Whereas a "retail" or normal long-distance customer has an 85% answer ratio (ASR) and a 2+ minute average call length/duration (ACD). All of the tier-1 telecom carriers have strict rules AGAINST this type of traffic. From a business perspective, a single T1 (23/24 channels), I can get ~200-300k minutes/month worth of usage. With a dialer customer, I can expect about 40k minutes/month
Actually, most carriers aggressively turn down customers that send dialer traffic, due to increased overhead versus total minutes (most dialer calls go unanswered or last only a couple seconds). Carriers would LOVE a magical way to distinguish, in real-time, a dialer call from non-dialer. But since they can appear from any number to any number, there's no way to know.
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.