Olá, Anderson.
Tudo bem?
Quando você cria uma classe Singleton para gerenciar a conexão com o banco de dados, a ideia é garantir que apenas uma instância dessa classe exista durante o ciclo de vida da aplicação. Isso é feito armazenando a instância em uma variável estática dentro da própria classe. No exemplo que você mencionou, a classe PdoConnection estende PDO e controla a criação da instância.
Aqui está um exemplo simplificado para ilustrar:
class PdoConnection extends PDO {
    private static $instance = null;
    private function __construct($dsn, $username, $password, $options) {
        parent::__construct($dsn, $username, $password, $options);
    }
    public static function getInstance($dsn, $username, $password, $options) {
        if (self::$instance === null) {
            self::$instance = new self($dsn, $username, $password, $options);
        }
        return self::$instance;
    }
}
Nesse caso, getInstance() garante que self::$instance seja sempre a mesma instância de PdoConnection.
Agora, se você alterar o método getInstance() para retornar um objeto PDO diretamente, como no exemplo abaixo:
class PdoConnection {
    private static $instance = null;
    private function __construct() {}
    public static function getInstance($dsn, $username, $password, $options) {
        if (self::$instance === null) {
            self::$instance = new PDO($dsn, $username, $password, $options);
        }
        return self::$instance;
    }
}
Aqui, self::$instance ainda é a mesma instância de PDO enquanto self::$instance for null. No entanto, a diferença crucial é que a classe PdoConnection não está mais estendendo PDO, e você está retornando uma instância de PDO diretamente. Isso pode ser confuso porque PdoConnection não é mais um PDO, mas apenas um gerenciador de instâncias de PDO.
A principal diferença está na tipagem e na garantia de que a classe gerenciadora (PdoConnection) é a única responsável por criar e fornecer a instância de conexão. Quando você retorna um PDO diretamente, você perde a capacidade de tipar explicitamente os métodos que dependem de PdoConnection, o que pode levar a problemas de manutenção e entendimento do código.
Espero ter entendido e conseguido ajudar. Qualquer dúvida manda aqui novamente. Bons estudos.