Зачем интерфейсы если есть трэйты?
Зачем нужны машины, если есть трамваи?

Трэйты и интерфейсы - это совершенно разные вещи, предназначенные для совершенно разных целей. Трэйт - это способ расширения класса. Своеобразное множественное наследование, интерфейсы - это макет класса. Жду еще вопроса "зачем нужны интерфейсы, когда есть абстрактные классы". 

Макет класса, в свою очередь, можно принимать в параметры методов и сам макет предназначен что бы изолировать часть класса и не создавать лишних зависимостей. Зависимость на Абстракциях. Нет зависимости на что-то конкретное. 

Представь, у тебя есть класс А с методами M1 и M2, с которым работают 3 других класса. Первый класс использует только метод M1, второй только метод М2, третий M1 и M2. Если ты просто передашь им в параметры класс А, то первые 2 класса будут зависеть от методов которые они не используют. Какой выход? Создай 3 интерфейса - для каждого класса и передавай их. Тогда классы использующие класс А не будут зависеть от того что не используют.
Множественное наследование

https://www.php.net/manual/ru/language.oop5.traits.php