Announce (like attachments) is a board-level permission.
When you post a calendar event you can select the board you want to post it in, but SMF doesn't know if you have permission to announce topics (or attach files) in the board you selected until you post the topic (unless you are an admin).
Yes, the alternatives (and I remember I discussed it about attachments) I can think of are:
1) show all the board-specific options at any time, but process while posting them only if the user is allowed,
2) try to play hide-and-seek using javascript (even though that would require an ajax call every time the board is changed or (easier) output somewhere all the relevant permissions with the boards names) and then do 1 too.