На вопрос “почему именно” не могу ответить. Легкое гугление не помогло.
Предположу что авторы хотели убрать неоднозначность формы записи. Когда читаешь код, и не знаешь особенностей синтаксиса, вида “096” невозможно понять что это двоичная запись а не просто 96. А ошибку кидают чтобы код, который мигрируют на strict предупреждал об неоднозначном поведении.
Этот код, вернее ошибка которую бросает js, выполняя его, пример плохости ошибок в js. Когда ошибка в коде в одном месте, а ошибка которую выкидывает интерпретатор, указывает в другое место.
Тут дело в некорректном синтаксисе. В let нельзя записать значение. После let должно идти имя функции.