Hi Carol. The cruise lines would never take you to a port where you have to stay on the ship – they’ll change the itinerary before stopping somewhere unsafe. That being said, there are ports (like Belize) where you really should take an organized shore excursion, be it ship sponsored or third party.
Cozumel is definitely not one of those ports – we’ve been there ten times so far. Our favorite place to go is Paradise Beach: pool, beach, facilities, food, drinks, free WiFi – all top-notch!
We haven’t been to Montego Bay yet but we’ve been to other ports in Jamaica five times without any real issues. Yeah, some of the vendors can be pushy. Smile and say “no thanks” – be polite but firm – they’ll move on to someone else in no time.
And, no matter where you travel, you should always be aware of your surroundings but never let that detract from enjoying your vacation!