On one cruise with a stop in St Thomas, with another family, we prearranged a Buck Island Sail & Snorkel trip just for our group.
It was outstanding. The sail boat came with a Captain and first mate. The first mate also served as our underwater guide, and brought squid to attract the fish.
Trunk in St. John requires a bit of swimming -- the water was a little rough when we were there, and my kids swim competitively. It was by far not the easiest or best snorkeling we have ever had. The coral looked dead, and the fish were few and far between.
The best snorkel trip we ever had was when we took a speedboat that anchored off of St John -- the beach was not crowded , I think it was Honeymoon beach, we saw lots of coral, fish and even an octopus! -- Buck island was so- so , the speed boat allowed us to hit 2 sites during the trip. Sail and snorkel trips involved more time getting to the sites, you might consider this if booking a shore excursion snorkel trip. Also most boat snorkel trips do not guarantee a certain site depending on weather conditions.
You will see fish at all of these ports -- never tried to snorkel in St. Martin -- If your kids like to play in the surf -- orient beach would be fun .
We have never been to Princess Cays -- but similar places on other ships -- and they are great because you can enter the water from the beach -- and don't have to swim far -- usually the water is calm because it is so shallow.
We have also snorkelled on Sapphire Beach in St. Thomas -- easy taxi ride right from pier and you don't have to book a tour.