I cannot respond regarding Jamaica because I haven't been there in a decade, but I just got back from a trip to Cozumel, plus I am a diver, so this is my fourth trip to the island.
Cozumel is mostly iron shore ship side. If you want to enjoy beaches, you will likely have to take a taxi to the beach. I am sure there are some shore excursions that will take you to the hotels with the white sand beaches or you could go to Chankunaab park, which has a private beach, dolphins, manatee, bars and rents snorkeling gear. It isn't cheap (entrance is a bit over $20 per person) but the sand is great, the equipment was up to par and they have nice shaded seats on the beach, no extra charge.