If bandwidth is contended, then you should just use fair queuing. If you have N customers, everyone gets at least 1/N of the total, what's left over is shared equally, repeat until it's all used.
I disagree. I think a system like what you describe is mostly appropriate *after* you provide a certain base level of service to everyone. The person with very-low-bandwidth need should rarely if ever have to wait for the person with the very-high-bandwidth-need, because otherwise you have two people paying the same absolute amount for a service but the one who is using it more is being prioritized. If I pay $20 for as many bagels a week as I want and you pay $20 for as many bagels a week as you want, and I take one bagel a day and you take five hundred, the store should make sure I get my one before you get your five hundredth.
You are missing one major variable.
You're bagel shop analogy has no rate, if instead each customer is only allowed to buy one bagel per minute and the bagel shop has sold the unlimited bagels package to 100 people... then they know that the maximum capacity they must be able to provide is 100 bagels per minute.
Of course It's not reasonable to expect an ISP would ever buy their maximum possible required capacity because they would quickly be out-competed, but if their peak load requires more capacity then using sneaky tactics to limit heavy users rates is not an honest strategy, in which case they are overselling. Basing your capacity requirements on peak usage statistics, combined with 1/n allocation in the event of capacity exhaustion is fair.
Big ISPs wouldn't do this because they'd rather sell an "unlimited package" that is only unlimited to people who never use more than 1 GiB per week. They will happily disappoint the 10% who try to use their service to the extent it was advertised to keep those 90% happy.
I think a system like what you describe is mostly appropriate *after* you provide a certain base level of service to everyone
I'd agree that it's important to provide a base level of service to everyone no matter what happens to the capacity... But does "eveyone" include the heavy users? i fail to see anything more fair than 1/n customers division, the heavy users gets as much bandwidth as the lightweight users in this scenario... how is that not fair.