Почему JavaScript подключают перед закрывающим тегом body?
Браузер останавливает парсинг страницы, когда встречает тег script. Поэтому, чтобы пользователь увидел контент как можно раньше, подключение скриптов откладывают на самый последний момент.Принципы работы современных веб-браузеров
Раньше скрипты были маленькие :) Сейчас серьёзно утяжелели - тренд на усложнение, single page приложения и прочие онлайн-игры. Просела скорость и стали выцарапывать её обратно всеми способами. Стало важно где именно подключать скрипты - разница стала существенна (выше расписали почему). Это у пионеров и самых отмороженных и навороченных.А остальные (те у кого скрипты несложные) просто переняли этот стиль как более современный.
Этот способ на самом деле концептуально не сильно хорош, но в текущей ситуации похоже наилучшее решение.