If you're going snorkeling around sensitive coral reefs or swimming in cenotes, it is becoming clear that regular sunscreen is a big no-no. It's harmful to the marine life and may kill the coral, according to this National Geographic article.
Four chemicals commonly used in sunscreen activate a virus that can bleach the coral. "The researchers estimate that 4,000 to 6,000 metric tons of sunscreen wash off swimmers annually in oceans worldwide, and that up to 10 percent of coral reefs are threatened by sunscreen-induced bleaching."
Of course you yourself won't be bleached if you don't wear any sun protection; you'll be cooked red instead. So the sensible solution is eco-safe/marine friendly sunscreen like that produced by Caribbean Sol. (As in Caribbean Solutions.)
It feels the same on your skin and blocks out the rays with the same zinc oxide (not one of the four culprits in bleaching), but is biodegradable and won't harm the coral or the fish. In my tests it performed just as well as the standard kind. It comes in SPFs ranging from 4 to 25 and there's also a kid's sunscreen version.
If you can't find the Caribbean Sol version, check around for others, but be wary: it's easy for a sunscreen to say "oil-free" or "eco-friendly" and still be filled with the offending chemicals. There's no regulation on the terms. Some outdoor sports and gear stores sell another brand, Mexitan, that is one of the only ones approved for some of the "natural sunscreen only" places in the Yucatan.
The other solution is to wear a sunshirt of some kind instead--probably the best bet anyway if your back will be facing the sun for hours of snorkeling.