Lots of good places to snorkel in Cozumel! If you want a snorkel guide, but don't want to use a ship's excursion, Eagle Ray Divers is nearby...about half-way between the San Miguel and Chankanaab. You could go to Chankanaab after Eagle Ray, if you wanted more snorkeling, or if you wanted to just get some good beach time. We dove with them, but had snorkelers onboard, including a first-time snorkeler, and we were all well taken care of.
You definitely don't need to go to the mainland for snorkeling, unless you are also going there for some other reason. I think Xcaret is a bit commercialized/Disneyfied, which might not be a problem, but just something to know. The trip to the mainland will bite into your time in Cozumel, but you may have a long day there??