I had some travel mates snorkel at Buck Island. I was on the boat but did not go in. The documentation led me to believe that I could actually be on the island (taking photos) while others were snorkeling. That is not correct. It is strictly snorkeling.
Anyway, the water was incredibly clear! Snorkelers coming back on board reported seeing an octopus, a barracuda, and a reef shark, along with other various and sundry reef fish. I heard nothing but comments of amazement.
Have not been snorkeling at St. John so i can't add anything about that location.
I've snorkeled all over St. John, have never been to Buck Island. St. John is awesome...if you go there, try Honeymoon Beach. You can get there by turning left at the ferry dock and following the signs, it is a nice hike...no facilities at all. So, if you want food...stop at Mongoose Junction and grab a sandwich or two.
Everyone goes to Trunk Bay, and it can get very crowded there....but, TB has facilities...restrooms, food/drinks, etc. Plus, of course, they have the under water snorkeling trail.