ok thanks for letting me know that. That is important as I do a lot of "changing of variables names" as I flesh out scripts.
In a compiled script, variables are actually represented by a numeric ID that corresponds to an entry in the script's local variable list. When you add a variable and recompile the script, the compiler adds a new entry to the variable list, with a new unique ID number. When you remove a variable, the compiler removes its entry from the compiled local variable list. When you rename a variable, the script compiler sees it as removing one variable and adding another, so the new name gets a new ID number and the old ID number is no longer valid. This breaks all other compiled scripts that refer to the variable, since they have the old ID number compiled into them.
If you want to rename a variable but have it still be the "same" variable, you can use TES4Edit beforehand to edit the script's local variable list, changing the variable's SCVR entry to the new name. Then when you rename the variable in the script's source code and recompile the script in the CS, the new variable name matches an existing entry in the local variable list (the one that you edited), so it uses that variable's ID instead of adding a new one. The result is that other compiled scripts that reference this one will still work, since the variable IDs haven't changed. (Trying to recompile one of those scripts, though, will still fail since it'll try to look up the old name. The person editing the script will still need to change it to refer to the new variable name instead of the old.)
One nice thing about OBSE v0018 function scripts, btw, is that it's not possible to refer directly to their variables from other scripts, so you can change variables all you want and not have to worry about breaking dependencies. Just don't change the function's parameter list, since callers do depend on that.