I've also worked at both sides and frankly speaking I don't see any benefit neither from the vendor's, nor from the customer's perspective. In terms of the contracts, usually it's:
- N hours of development per feature/project (fixed price);
- N hours of development monthly (usually it's a 'support' contract type);
- Pay as you go, or 'time&material'. You'll be billed at the end of the month depending on how much time the team spent.
As far as I saw, nobody specified the rotation degree. But some contracts include the seniority of the developers.
Another thing is a dedicated team, where as a customer you work with the developers directly and may interview them before signing the contract. Here the customer can refuse to work with a replacement.
In case of a fixed price, the cost of the rotation is covered by the vendor as they normally don't bill additionally for onboarding a new team member. The client has a risk of the deadlines not being met though.
In case of support or time&material contracts, the onboarding is payed by the customer, because they basically pay for the hours worked. However this varies from vendor to vendor. I've seen cases when a customer is billed for 100% of overhead, also with no discounts if a senior guy was replaced by a middle guy. Some offer discounts, some don't include overhead hours into the invoice. And some provide juniors for free until the junior is ready to deliver something valuable.
For the dedicated teams, if you're a customer and you're fine with the replacement, it's usually your responsibility and money to cover the learning curve of a new guy.
Perhaps the only benefit of rotation is when the replacement is much better than the previous guy(s), but this is a rare case and might mean that something was already wrong.
In general, sure, try to keep the rotation degree as low as possible, but even with the rotation in place if the team still delivers, there won't be dissatisfaction.