Shopping is great in St Thomas, but there is also a lot of great snokeling there. There is also a very good submarinbe ride you can book on your own (not through the ship) and save some money.
I have done submarine rides in St Thomas, Maui and Curacao. I would say St Thomas was the best in terms of wildlife to se underwater.
By the way, if you want an authentic Caribbean wildlife experience with a nice beach nearby, there is a place called Coral World. You can get a taxi to take you there and pick you up for about $5 - $10 each way. Then to enter Coral World is about $15 per person. It is worth it to see wild sea animal underwater and in exhibits. One of my more favorite cheap shore tours.
Get there early, and you can exit the park and go swimming at the beach which is right next door for no extra charge. Forgot something (bathing suit, sunscreen), you can buy it right there at very cheap prices.