If ISPs were like an electric utility, we'd see something like a cost per GB transferred in cents, with a minimum charge reflecting the cost of maintaining a connection of a certain speed to the network.
Which is algebraically identical to a monthly charge and data cap with overage charge. The main issue is the overage charge is too high, it should be like 1 cent per GB (Comcast is charging 20x that).