потому что конец блока это не чтобы тебе было удобно освобождать, а чтобы тебя бить палкой за попытку использовать символы за пределами области видимости
ну гляди, у тебя условный let, в котором делается alloc, мы смотрим, что есть alloc и в конце блока делаем free на всё, что было зааллочено в начале блока
ну эта, выход из скоупа это ядро языка. А аллокация и free, внезапно, нет. Оно конечно входит в стандартную библиотеку, но существуют экзотические условия, когда ее нет.