We are stopping in these ports....Cozumel, George Town, Roatan Bay, Costa Maya.
I've been in all these places on cruise itineraries and have dived the first two.
I would rank Cozumel first for a number of reasons. Most cruise ships have a somewhat longer shore window here, and it is relatively easy to book a dive with a local operator to accommodate the cruise ship schedule. There are also fewer must-see things to do (besides diving) in Cozumel. Access is OK although I had to carry all my gear through both floors of a shopping mall to and from the ship because the port is configured such that passengers aren't allowed on any other way. I believe there are a couple of piers so it may depend which one your ship uses. There are dozens of excellent dive ops and you should be able to find someone who will work with you. I used Aldora and would recommend them. As noted upthread, these are drift dives.
I had excellent diving in George Town however there are fewer operators and I had difficulty finding one that would accommodate the cruise ship schedule. This is a tender port which adds a level of delay and uncertainty to arrival and departure. The beach here is also excellent. While the diving is good I would much rather dive Cozumel and stay on the beach in George Town than the other way around.
I have not dived in Roatan but at one point took the "private island" beach excursion with Carnival, which is very good and which I would recommend. I'm not sure what the name of the resort is that operates the island attraction, but they serve several cruise lines. Nice uncrowded beach, snorkeling, some replicas of the Mayan ruins, and a well-run shelter for Macaws -- I've never seen Macaws as healthy as the ones here. Can't speak to the diving.
Costa Maya has a lengthy beach with restaurants, bars, and shops that open out onto it and that serve food and drink in open-air tables on the beach itself. Not crowded when we were there. Can't speak to the diving but have heard it's nothing special, and I'd put this one last for that reason.
When diving from the ship, I booked my dives privately and brought all my gear except for tanks and weights.