You introduced a closure there. Bindings set in if, case, receive, etc will spill in their surrounding environment. Obviously they won't spill outside closures without mutable terms, which BEAM lacks.
The bits about SSA transformation needed to be done by hand in Erlang are a bit fun, because that's considered a feature in the Erlang realm.
The scoping rules aren't the same for the very reason you dismiss as an implementation detail.
Scare quotes: http://en.wikipedia.org/wiki/Scare_quotes