This is a phenomenon that generally only affects American vacationers. Those from other countries have to exchange their currency anyway, so do so into pesos, as this avoids having to pay charges twice. Many Americans quite happily spend their whole vacation in Cancún without once having to handle a peso. However, this does limit them to staying in the Hotel Zone or else visiting Downtown Cancún. Elsewhere in Mexico, outside the main tourist areas, dollars would not be accepted.
There are obvious benefits for the American tourist here. The inconvenience of having to mentally calculate the exchange rate, or work out what coin relates to what, all goes away. They can just relax and get on with their vacation in paradise. If the area accepts your own currency then why not use it? Arguments that Mexican tourists in DisneyLand couldn't pay in pesos are neither here nor there. DisneyLand doesn't accept pesos; but almost everywhere in Cancún does accept dollars.
For the Mexican locals, the situation is slightly murkier. For workers, the minimum wage is the equivalent of about $4 USD a day. Their tips are viewed as a portion of their wages, therefore they are relied upon in order to take home a living salary. If they didn't accept the dollars, then they'd have no tip at all. It's a case of necessity. For those living outside of the tourist areas, they have to shoulder the exchange charges themselves, as they change your dollars into Mexican pesos. For those living and working in Cancún, then its slightly less problematic, as they can just do their own grocery shopping in dollars. Unfortunately, they can also see the Mexican prices, which will work out at less.
Therein lies the crux. While everyone from the large stores to the roadside taco vendor will accept American dollars, it will not be at a favourable exchange rate. By handing them a US dollar, you've effectively passed on a charge. They will reciprocate by ensuring that the rate is included in the price of whatever you're paying for. In fact, many people with calculators and knowledge of the current exchange rate have noticed a tendency for merchants to round down the rate. This means that you are paying more in dollars than you would have been had you just changed it to pesos in the first place.
At the time of writing, the exchange rate is $1 USD to $12.8 MXN. However, you will only find vendors willing to accept $1 USD to $10 MXN. In short, each time you purchase something in dollars, you have lost out on $2.8 MXN; for every $4.5 USD handed over in Cancún, you have lost $1 USD. This can very easily add up, over the course of the vacation, to a huge amount of money just thrown away. Let's compare them. In this scenario, you've saved up $100 USD as spending money for your Cancún vacation.
$1 USD = $12.8 MXN: $100 USD = $1280 MXN - 2% bank charges (25.6) = $1254.4 MXN
$1 USD = $10.0 MXN: $100 USD = $1000 MXN
= Loss of $254.4 MXN (nearly $20 USD) in your spending money by paying in dollars on your vacation.
Now multiply that by amount that you're really taking. By the time you hit $500 USD, you will have thrown away nearly $100 USD. Fair enough, if that is the price that an American tourist wishes to pay for convenience.
However, this equally leaves your waiter, with your one dollar tip, with a dilemma. (S)he can now use it to buy items at higher prices than the same in Mexican pesos; or else go to an exchange booth and pay the charge to have it transferred. (They don't do this at a bank, as a Mexican cannot have a US dollar bank account. But no-one worries about this, as the booths often have a better exchange rate than the banks anyway.) A tip, by its very nature, cannot include a mark up price to negate this charge. What many do to resolve this is to hold onto their dollar tips until the exchange rate is extremely favourable. By doing this, it might take weeks to end up with money in their pocket, but they may well gain a couple of extra MXN pesos when they do cash it in. For those with financial savvy, this can end up being quite a bonus, as the peso is usually weaker in comparison with the American dollar.
One of the main criticisms of changing money into pesos is that the banks and ATMs don't give out small bills. You want to tip in pesos, but your trip to the exchange has only left you with $100 peso bills and you're not tipping anyone with that! It is worth noting that there is a trick to this. When you request money do so with an uneven amount. The tills and cashiers will try to match the highest amount that they can, but that is reliant upon you making it easy for them. If you've asked for $99.99 pesos, instead of $100, then you will receive a portion of that in coins or smaller bills, because it can't be rounded up into a large bill.
For those rich enough to still insist on paying in American dollars, then please note that they have to be crisp ones. It is best to contact your bank several days in advance to arrange to collect dollars. Most banks just recycle whatever comes through the cashier's till, which can include folded, torn, dirty, written upon or otherwise vandalised dollars. Once a week, banks tend to have an influx of pristine bills and these are what you will need to take to Mexico. The reason is that many of the exchange offices there will only accept pristine bills, therefore these are what the vendors will accept too. The nicer that your bill looks, the more readily it will be accepted. Also most vendors in Cancún will not accept American $100 bills. This is because there has been a recent outbreak in fake bills at that amount.
For those who wish to have extra spending money by switching to pesos, then the exchange rate is fairly uniform across Cancún. The airport is traditionally unfavourable, while Walmart, in downtown Cancún, traditionally offers the best exchange rate. Otherwise, everywhere is much of a muchness.