Option 2.
This is the most versatile. I've already comment on option 1. Option 3 may cause problems for those who need to set a label which is actually used by the script. To force lowercase, you set a barrier for programmers to work around, which is not necessary.
Regarding your concern, you can make a mention of the change is the release notes. It's not unusual for a newer version of software to require minor updates to user files.
I actually doubt there are many "out there" who would be effected. I use label names myself, but only in triggers, there isn't as much need for specialized labels in aliases.
I'm trying to think of an example where one would be used. perhaps:
bs *
label: Backstab
Script: Backstab
bsf *
label: Backstab_and_Flag
Script: Backstab
Sub Backstab (AliasName, Output, arrWildcards)
If AliasName = "Backstab_and_Flag" Then World.Send "flag arrWilcards(1)
Do something else
End Sub
Hmm... I actually have those two aliases, but rather that use an IF statement, I simply put "flag %1" in the Send box of the latter, while the former has nothing in the Send box.
In writing that, I realized that if I had wanted that to work, I would have needed to make the IF statement check for "backstab_and_flag". It's probably natural that I would have seen the inconsistency, and changed the label to lowercase as well.
If you make the #2 change, nothing will change for those that already use a lowercase label, it's only the people who use an uppercase label and check for lowercase in their script. I'm betting Moho was the first to notice.