интерфейс - грубо говоря это поведение, описывающие ряд действий требующих реализации. У одного класса таких интерфейсов может быть много.
Согласно вашему вопросу, всегда ли нужно для класса городить интерфейс - нет. Чаще всего классы описывающие какую-то сущность (пользователь, запрос, животное) не имплементируют интерфейсы (если не требуется какое-то объединение по поведению).
Для сервисных классов (которые что-то делают с этими сущностями) лучше прописывать интерфейсы и завязываться на абстракцих.