I can cut though the noise, I believe, with a fundamental question: If the US$ holds at 20 pesos to the dollar and the CDN$ starts at CDN$1.00 = US$1.00 but then declines to 90 cents US, do you think you can still get 20 pesos for your Canadian dollar? I don't think so, but as I have said many times, I am not an economist. If you can, I told you what you can do; you can withdraw 20 pesos per CDN$ at an ATM and pay your dive bill with it. Problem solved. If, as I am pretty sure, you can't get but 18 pesos for it, than your problem is simply the decline in the value of the CDN$ in the international money market. Even if the price of a dive were in pesos and stayed the same, you would still have to spend more CDN$ to pay for it.
You say you have provided a solution, but you have just flatly stated it; that proves nothing. Show me the numbers, all of them, in balanced equations. Start with 1 CDN$ = 1 US$ = 20 pesos MXN. Change it to 1 CDN$ = 0.9 US$. What happens?
Finally, any diving rate, no matter what currency it's expressed in, has a value in pesos. Ask your op "How much is that in pesos?" and they will tell you, based on the exchange rate to pesos from wherever you are starting. US$ doesn't have to come into play into it at all.
That's it; I am done here. You have my sympathy for either your getting screwed by Cozumel dive ops or your inability to grasp why you are not. Take your pick.