My wife and I recently took our first cruise. We never thought we'd be interested in cruising, but it was a friend's wedding, and it seemed like the right opportunity to give it a try. We briefly considered doing a dive in our ports of call in Grand Cayman and/or Cozumel, but decided not to. It was an easy decision because the obvious shore excursion to choose was whatever the rest of the wedding party was doing. And a party it was. We did Stingray City on Grand Cayman, a bit of snorkeling on Paradise Reef in Coz, and a whole lot of drinking.
So, having now experienced what it's like to call on a port and do a so-called shore excursion, I cannot imagine trying to squeeze in a dive of any quality. The whole thing felt seriously rushed--a race against the clock. We had brought snorkeling gear, and even that turned out to be a waste of space--all for 20 or 30 minutes in the water. And it's not like we had never been to Cozumel before--just not on a cruise ship. I would have been seriously annoyed if I had lugged my dive gear along just for a dive or two on Paradise Reef. It seems clear that cruise ship people are not going to be able to do the best dives a place has to offer. Our decision to separate cruising and diving turned out to be right for us.
Calling on ports was actually our LEAST favorite aspect of our cruise. In contrast, we loved the days at sea. The days at sea are relaxed, and everything you need is right there--the whole point of a "floating resort" as I see it. But the days in port we felt hurried and more stressed. If we ever take another cruise--and I suspect we may not--we would choose one that maximizes the days at sea and minimizes the days in port. If we want to see a place or experience some activity, we will just make a separate non-cruise trip there and do things on our own schedule.