There is no booking too early. I never book my excursions through the cruise line. I book on line. If you book on ship, you're probably smarter by booking right away. Some times the bookings sell out.
I have never been on a cruise we are going on our 1st in January but I have been reading in reviews and the prople who bought there excursions outside the cruise line did not get there money refunded if the port was closed to the cruise ship. I would be scared that saving a little money would bite me in the butt if this would happen.
If a tour company did that to people they wouldn't be in business long. Normally they take your credit card number to confirm your reservation. The excursion isn't charged to your credit card until you show up for the tour. If the port is closed you shouldn't have to worry about it. For any other reason you should call the tour company.
I have started booking them on my own and you can save about 50% doing it this way. But for new cruisers, it can be confusing, so you can always book through the cruise line. Having said that, the question about how soon to book is answered best by the rule of thumb- "If there is something you decide you MUST see or do, then book as soon as you decided and the cruiseline lets you." Book online through the website. Nothing is worse than waiting to you get on the ship and find out that once in a lifetime excursion is sold out.
I agree with SonnyV - I never book thru the ship - the prices are much higher.
I spend alot of time reading reviews on each port we are going to. Then spend alot of time asking questions. By the time I'm done researching I know what we want to do. Then I always book on line with each company - yes they do want your credit card number. But, I have never been charge if something happens.