In St Thomas, if you are traveling with a mixed group of divers/non-divers or are on a budget,
www.cokidive.com at Coki Beach is the way to go. Inexpensive shore dives for the divers and a morning at the beach with snorkeling for the non-divers.
For the more hard core diver, a boat dive with either Chris Sawyer dive center or Admiralty dive center is in order for the day.
The diving in St. Maarten leaves much to be desired. I wouldn't dive there again unless the ocean was dead flat calm, and even then I wouldn't expect much.
I don't think you will have time to dive in San Juan unless you are there either pre or post cruise, as the diving in Pruerto Rico isn't near San Juan.