Правильнее сказать не "плохая практика", а "нарушает SOLID".
"Сервис в сущности" нарушает принцип единственной ответственности (SRP), совмещая в одном объекте как представление самого объекта, так и какую-то внешнюю логику.
Это не значит, что это "плохо" или "хорошо"! Есть разные (иногда взаимоисключающие) подходы, не обязательно упарываться на строгое следование им всем. Вот пример, когда это можешь сильно усложнить разработку:
https://habr.com/ru/post/153225/
UserPasswordEncoderInterface и NotBlank - это не сервисы, а валидаторы. Они относятся к внутренней логике объекта, не только не нарушают SRP, но и должны быть именно в этом объекте.