In the situations I have been in, the decision was made by the Captain at the last minute. It was announced at the sail away party that we would go to San Juan instead of St Maarten (it was our first stop) and the time we swapped our sea day/CC day we didn't know if we would even make it there until the night before.
We have had the 2 instances above, and also had a sea day/CC day swapped another time, and once went to Nassau instead of CC. There has been no compensation. I would not expect anything in a situation like that as Disney cannot control the weather.
I agree. We sailed on the Magic one time during a huge cold front and missed Key West, missed Grand Cayman, and went to Costa Maya, (the first time Disney ever went there) and then Castaway Cay. We had 50 mph winds and 25 foot seas. No compensation, but we did not expect any. We still had a great time.