I had the same thing happen to me in Brazil. Stayed 10 nights at Marriott in Rio over New Years. I reserved in USD and upon check out, I wanted to pay in USD cash but the hotel said I couldn't. They exchanged the rate into local currency at a 30% premium! I contacted MR corporate offices when I got back. In the end I got a credit of over $400 back on my credit card.
Marriott should give guests the option when making a reservation for all over-seas properties to be able to quote and reserve in local currency.