Если очень хочется понять, зачем нужны трейты и как их использовать, попробуй реализовать Singleton на PHP так, чтобы можно было определить класс-одиночку следующим образом:
class MyClass implements SingletonInterface{
use SingletonTrait;
...
}и объясни, почему нельзя сделать тоже, но с помощью абстрактного класса?