The key is to have a good T.A. that doesn't charge for change fees. We usually book early as an inside cabin. Then when prices go down, we change to a better cabin as the cruise fare reduction and our real budget allows. That way we know we are on the ship for sure and often we get a bonus of a much nicer cabin. The caviat is that such cabin changes usually must be made prior to final payment.
We always book the air ourselves after the cruise is purchased, watching for bargains. This seems to work well for us.