The problem for service providers is that increasing capacity costs money and their business models didn't catch up with the reality of increasing average usage. I agree that monthly data caps are a very poor method of controlling usage, but the problem is that the "better" methods cost more and are more complex both to implement and explain to consumers.
It's relatively easy to explain to customers that they have a limited amount of total transfer per month or billing cycle. Trying to explain to customers that they have the right X amount of high priority transfer or Y amount of peak usage transfer (peak usage varying either by time of day or actual measure usage) is much more difficult. One of the "best" methods for actually controlling peak traffic is based on actual measurements of usage for the service group (DOCSIS) or OLT or splitter (PON) and giving everyone in the group equal priority for that bandwidth. The problem is that these physically based objects aren't split evenly inside of an ISP's customer base nor is it practical to expose the total port/service group/AP/splitter capacity to all the customers being served by that element. While the average