Both are great, but are at different ends of the spectrum. Chakanaab Beach Park is a nice beach day, with very good snorkeling, some "ruins," dolphin shows and encounters, and so on.
Xcaret is an "eco-amusement" park, costs a lot more, but has all of the above (okay, skip the snorkeling), plus horse shows, folkloric shows, an underground river drift, and nicer "sandy" beaches. However, it is near nothing. Chakanaab is right outside of Cozumel's tourist district with shopping, bars to get drunk in, Tanzanite and everything-else-International, etc.
Both are great, one is better with kids (Xcaret), one is less expensive. If you are going to Cozumel and were planning on taking in Xcaret, you will have to factor in the ferry ride back to the mainland, connection there to Xcaret, and the same on the reverse way home. I'd stick with Chakanaab if that's the case. If you are going to Calica, then Xcaret is right around the corner and the above does not apply.
If in cozumel, Chankanaab is the place to go. Its quite a long trip to and from Xcaret from the island. If you are on the mainland (playa Del Carmen/Calica) then Xcaret is a joy..Its a wonderful (and yes a bit expensive) place.. And you can snorkel there as well.
The Island tour is great the first time you visit (go to hell - really) and the turtle farm. But if you like adventure, then either the stingray city tour or if you prefer not to get wet,, try the atlantis semi-submersible. Its airconditioned, you sit in a boat that sits below the waterline so you are underwater and can look out at the frish and reefs. Its like bneing in a submarine but safer and cheaper. Kids loved it.
Ive heard the island tour is garbage,,, go to 7 mile beach, or a catamaran snorkeling excursion, when we were therelast year we had a great excursion from the ship,,, snorkeling was excellent but i wished i spent more time at 7 mile beach,,, youll have a great time no matter waht, ps cayman is very exspensive for shopping...