The third option is to book with an independent tour company that has contractors in each port. This way your not booking directly with an independent company in the port, but you're dealing with a larger company here in the States. This affords you the best of both words. For example, we have a contract with Shore Trips and they have been outstanding for our clients. And with over 800 of our agents using them with only very few problems, I can say they have always treated our clients wonderfully. We've personally used them many times and have never had any problems. Plus, they have insurance so should anything ever happen, they will take care of you. Booking independently in some ports you're just never too sure exactly what you're going to get. But having been on 45 cruises all over the world and done alot of shore excursions on our own, through the cruise line, through independents, and through Shore Trips, I can honestly say that I would never book an excursion offered by the cruise line unless it was the only way to do what we wanted to do. They're too expensive, too controlling, too crowded, and usually too short.
And I've heard alot of people say that the cruise line won't leave you if you on a cruise line excursion, but they will if you on an independent tour. And this couldn't be further from the truth. Booking through a major shore excursion company, like Shore Trips, you don't have to worry about it. They will stay in touch with the cruise ship should anything happen. I've personally had long conversations with a few ship captains about this very issue and it just doesn't happen. The people who miss ships are almost always on their own or they were not in touch with the ship communicating that they would be a little late. It's all about communication as they never want to intentionally leave anyone in port, but they have no choice if they are not informed on what's happening.
BTW, I'm not trying to push Shore Trips, but as I said, they have treated our clients very well. Whether you use them or another major company (and there are several out there with very good reputations), they will take care of you.
At the same time, if you want to use an independent, just do your homework and check them out ahead of time. This is where the internet is a very good thing. For example, with used SPB Tours for our 2-day excursion in St. Petersburg, Russia. We booked directly with them based on all the feedback we got and the reviews we read and we couldn't have been happier with them.