Вопрос: как правильнее?
Никак.
Оба подхода имеют право на жизнь.
Плейсхолдеры, при правильном использовании, немного сокращают выходной css код.
Такое ваше использование очень смахивает на atomicCSS.
Может так и стоит поступить?
Сделать кучу классов
.d-flex { display: flex; }
.justify-content-between { justify-content: space-between; }
.direction-column { flex-direction: column; }
И потом использовать либо классы в разметке, либо расширяться прямо от них
<div class="d-flex justify-content-between"></div>
.some-class {
@extends .d-flex;
@extends .justify-content-between;
}
Ой! Мы, кажется, переизобретаем bootstrap...