There are several nice snorkel tours offered in both ports by most cruise lines.
Many folks go to Pinel Island to snorkel in St Martin. Been there once and thought it was ok at best.
On St Thomas if you want to go to the beach and find good "walkin " snorkelling try Coki Beach or Saphire Beach. At Coki there are lots of fish on the right side (Coral World side) of the beach and there are coral formations at the extreme left side of the beach or straight out just offshore (watch where the scuba divers go). Of course you can get to St John and go to Trunk Bay (or just about any other beach) and find decent snorkelling.
Both Coki and Saphire beaches are free and easy to reach by cab. Both have food and facilities.