I've been to St. Thomas twice, the first trip we took a cab to Megan's Bay - like previous poster said - snorkeling wasn't very good. Second trip we took a ship excursion to Coki Beach - snorkeling here was great! I'm sure it would be cheaper and just as easy to take a taxi to Coki Beach. I haven't been to St. John, but I've heard the same thing the other posters have said, the snorkeling is fabulous.
Have a great time - St. Thomas is a great island - the drive to the beaches is up and over the mountain and the views from the top are incredible!! The taxi driver we used was "Timmy's Tours" and Timmy was great! Gave us a great deal and stopped to show us the sights, then he waited on us while we swam for about and hour! The excursion we took from the ship was also nice.
Enjoy your cruise!