Mmmm, no hay diferencias como bien te indica pateketrueke pero esto no es patron singleton ya que puedes hacer:
Código PHP:
Ver originalnew MiClase(); // Deberia dar un error
O tambien
Código PHP:
Ver original$obj = MiClase::singleton();
$obj2 = (clone) $obj; // Deberia dar error
Tampoco deberia permitirte hacer esto otro:
Código PHP:
Ver original$obj = MiClase::singleton();
$obj2 = unserialize($serialized); // No debería permitirlo tampoco.
Todas las opciones de arriba te crean un nuevo objeto cosa que no debería ya que el código debe permitir una y solo una instancia.