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.
Enjoy!!