Если используется какой-то относительной новый фреймворк (vue/react/angular), который сам генерит DOM-дерево, то специальные классы не понадобятся, т.к. фреймворку не надо искать эти элементы.
Если работаете по старинке, jquery/backbone.js, то c ними удобнее. Смысл их в том, чтобы отделить поведение от представления, так что class="b-block__element js-block__element" — не очень удачная идея, лучше делать классы, описывающие роль элемента, типа js-placeholder или js-addressInput.