You know, I think I've done something different each trip. Bought pesos in the US and carried them down (my bank charges me extra of course), used the ATM at the airport in CZM to get pesos, and used the banks' ATMs in CZM. Can't remember using a cambio. I've kind of settled on getting pesos from the ATMs at a bank once on the island, but since I like to have some pesos on hand immediately, I hit up the ATM at the airport before leaving.
Here is the balancing act. I don't like to buy a large amount of pesos, but what happens is I try to minimize the ATM fees that hit me every time I do a transaction, which is fixed, regardless of the amount, so I don't go too low. I can't get enough for the week in one transaction if I remember right, plus it's hard to guess what that will be, so I end up estimating as the week progresses and hope it's more than enough when I go back to the machine for the next round. When quoted both ways I usually pay the cheaper way but normally prefer to use pesos as it really doesn't seem to be enough to worry about in the end for the amount we are spending. Hotel and diving are paid for by credit card before leaving home, the rest is mostly only meals/drinks.
The long-winded point of this is, I think this year I will not worry at all about this. I will get pesos early, as many as possible within reason, and then, at the end of the week, as I've done before, whatever is left over will go to the dive masters and possibly others (we dive all week and tip at the end). If I don't have enough in pesos to properly tip, and probably won't, I will make up the rest in USD.