Менять стилизацию vue компонента пропсами или css переменными?
Я бы придерживался правила: всё что можно сделать без js - надо делать без js.
Не согласен с отписавшимися выше. Компонент должен быть чёрным ящиком. Внешний пользователь ничего не должен знать о его внутренней структуре. Пользователь компонента передаёт ему свойства и получает гарантированый результат.

Проблема с css в том, что если впоследствии вы кардинально переделаете внутреннюю структуру компонента, в большинстве случаев вы не сможете сделать так, чтобы старые внешние css правила работали как надо, и у тех кто кастомизировал ваш компонент таким образом всё поедет.
Передавая же параметры как свойства компонента - вы имеете полный контроль над тем как их использовать в построении и можете спокойно вносить изменения.

Конкретно в приведённом примере подход с css +- не должен привести к проблемам, но в большинстве случаев ситуация иная.