Суди сам: ты подключаешь трейт в один, второй, третий класс. Меняя что-то в трейте, ты меняешь все классы, где трейт подключен. То есть, это создаёт side-effect'ы и нарушает принцип открытости-закрытости.
На трейты стоит смотреть с большой долей подозрения и скепсиса, на самом деле. Ни для первого случая, ни для второго их использовать не круто. Но иногда бывает очень к месту, чтобы не пилить 100500 классов и не делать 100500 extends
если хорошо подумать, то трейты не нужны. нет такой ситуации которую нельзя решить без трейтов, и нет такой ситуации для которых трейты необходимы.
всё, для чего они подходят - упрощать код в мелких проектах