Просто множество специалистов решило что использовать ООП на фронте(именно создание объектов через классы, иерархии наследования, расширения), это подход который излишен для задач фронта.
И с тех пор как-то принято ООП избегать во фронте.
Но если взять какую нибудь команду C# или профи java, которым проще ООП, то у них всегда есть возможность использовать подход ООП если надо по быстрому фронт накидать.
А если они еще и typescript используют, то вообще разницы с например C# могут и не почувствовать.
Поэтому например классы и ООП в js таки активно развиваются.
В общем дело вкуса. Большинство выбрало все таки функции.