Поведение переменных в области глобального объекта отличается от поведения в созданных объектах?
Покопал еще вопрос и нашел очень годный разбор на стаке:
stackoverflow.com/questions/4862193/difference-bet...
если коротко - переменные из нового стандарта (заданные через let, const) ведут себя порядочно, а старые варианты прилипают к глобальному объекту как свойства (0_o)
Поведение разное, потому что разные контексты исполнения. Если хочется поскрипеть мозгами, можно почитать спецификацию www.ecma-international.org/ecma-262/7.0/#sec-execu... или статьи на dmitrysoshnikov.com/category/ecmascript 
Кстати переменные, объявленные в глобальном контексте через let и const в свойства глобального объекта не записываются.