(Not to mention that there are no inherent variable costs to transporting bits. Water needs to be purified, electricity is obviously usage priced - but you can be pushing bits forever once you have the hardware setup.)
With usage-based billing, the amount will float up and down and it's hard to understand how the amount is calculated. Usage-based telephone bills are broken down by calls, which you can probably remember.("What's this 46 minute call to 555-1234? Oh yeah, I called Mom last week.")
With IP traffic, how do you itemize the charges? Temporally? I used to get cell phone bills that included pages and pages of stuff like "Jan 27, 4pm, 239789987345 bytes". It was completely useless.
How about reverse DNS? That has other problems. • You use BitTorrent? Here's 247 hosts with incomprehensible names on your bill. • You use a VPN? A whole bunch of traffic is lumped together. • "Honey, what's all this traffic to nastyporn.com?" • It puts pressure on web sites to optimize their deployment strategy for billing clarity
The "correct" way is probably to log everything, then provide analytics software. But I can't imagine my Mom generating reports just to understand her internet bill.
Economically, sure, usage-based billing is a great idea. Alignment of incentives and all that. But practically, it's a pain for everybody involved.
My electricity bill shows only X kWh per month. There is no "itemization" of usage. However I can purchase watt meters that can monitor power anywhere (including the main grid connection) if I decide the bill is too high.
I can definitely imagine a similar service sitting on the router or provided by the provider that does bandwidth accounting to deliver a picture of what is going on. I'm sure there would be many third party device manufacturers willing to do this traffic accounting as well.
I personally think the resistance to usage-based pricing in the tech community is really weird, although I mostly see it on the consumer end. Hard caps are bad, and caps that only apply to some services are really bad, but charging more if you use more is completely reasonable.