We haven't experimented with it yet ourselves, would love to hear from people that have.. However, I'll share our thought process.
We are launching a new service shortly that we have placed limits on every feature where we have external costs to pay. Any feature we have that is internal to our software, like adding more records etc, we don't really have limits except where we found it helps people to select the right tier.
And on our plans where there is a limit, we allow people to purchase blocks above their service level, either as a 1 time add-on or on-going basis. For example, we provide SMS messages as part of each tier, so if your plan offers 1000 SMS messages monthly, but this month you need to send 2000, you can just pay for a block of 1000 more and not have an ongoing fee. We don't sell them by the message, but in blocks. But if you find yourself needing that permanently it might make more sense to upgrade the plan.
Also, we have a threshold that if someone goes over our "limit" within a certain percentage we do not charge anything additional for it. We did this because in beta we had a few clients schedule like 10-20 extra messages in a single month, and it just seemed wrong to force them to purchase a block for such a small overage. But if we see that occurring for 90days then we have the system alert us to reach out and talk to the client.
We also have an enterprise tier where yea, pretty much everything is negotiable and can be unlimited with the appropriate pricing associated. And enterprise clients we will quote individually, as I would see those types of customer feeling more comfortable talking with an account manager anyway and having a plan tailored specifically to their needs.