Landlords use software to set rental rates
nytimes.com
nytimes.com
Renters are usually constrained by income and location, if the price goes too high people will make other choices (buy, move further, or squat). Also, as opposed to investments, properties need to be lived in. An abandoned apartment, even in just a few months, will have water damage, weathering, pests and vermin, and theft. And for the moment, I believe, the US has a 1-2 year backlog of empty houses.
One could argue web apps could work like this as well. There is fixed capacity (how many users could your server farm handle) that is wasted if underused. This fixed capacity is fuzzy, of course, so defining it is the first difficulty, Then, it's much harder to apply price discrimination for software. People feel cheated if they find out someone paid less for the same thing. There are obvious differentiation mechanisms in real estate that prevent this. These are missing in software. One could try to increase price variation by using time-limited rebates, for example around a holiday, in addition to the classic multi-tier pricing.
Interested in hearing what patio11 has to say about this.
A lot of spare capacity in server farms seems to be due to the need to cater for demand spikes, so that the experience doesn't degrade. Each additional user will, after a certain point, harm the experience of the previous users. A stronger analogy would be a power utility.
It would be quite difficult, I think, to do what you propose without being able to predict demand spikes well in advance and with a high degree of accuracy. Even if we could do that there's another issue: a power utlility can sell power to certain types of consumers at off peak times to soak up spare capacity, but electricity has many uses. A web-app isn't likely to have many non-core uses that would appeal to specific users at off-peak times.
Cloud providers can use this sort of strategy, but I don't think it would be useful for individual web apps, unless you are selling something very generic. The best way to deal with this issue, from the perspective of an individual web app, if it bothers one, would probably be simply to use a cloud solution, and let them deal with the excess capacity issues.