For one thing, it makes the distinction between language keywords and variables clear - no problems in using `$switch` or `$var`, and even more important, the core devs don't have to take as much care when developing new language features.
Not that I usually use variable names like these, but it quickly becomes automatic to use a dollar sign.