ISPs charge consumers a monthly fee for theoretically unlimited usage because that's the way most people are comfortable paying for their internet usage. Even a geek like me doesn't have a clear idea of how much bandwidth I use in a month, so for most people a per-byte-transferred pricing scheme would be totally unclear. Contrast this with something like per-minute phone usage pricing.
Bandwidth certainly is cheap, and constantly getting cheaper, but the average consumer's bandwidth usage is also increasing. A few years ago, as filesharing became mainstream, broadband ISPs found it much more costly to provide unlimited service. Their ways of managing this extra cost include some throttling but also, interestingly, a proliferation of local peering.
Local peering is when two small ISPs, say in a single city, notice they are both paying their ISPs in order to send traffic to each other, and decide to instead run a line between themselves and exchange traffic on that line instead of paying their ISPs. There was never any reason to do this sort of peering on a local level until we all started sharing music and movies with other folks in our neighborhoods; the increased demand has led ISPs to make a lot of the bandwidth we use less costly for them.