É basicamente um Singleton Design Pattern que usa uma função em vez de um método estático.
Para olhar mais a fundo, verifique o código-fonte
Então, basicamente, ele não impõe o singleton, mas é um atalho para uma função pública ...
Edit: Na verdade, agora eu entendo. Para compatibilidade com o PHP4, eles tiveram que fazer um hack duplo de variável global para que retornasse as referências corretamente. Caso contrário, as referências ficariam confusas. E como o PHP4 não tinha suporte para métodos estáticos (bem, de maneira apropriada), usar a função era a melhor maneira. Portanto, ainda existe por motivos de legado ...
Portanto, se seu aplicativo for apenas PHP5, não deve haver nada de errado em fazer CI_Base::get_instance();
, é idêntico ...
=&
em nenhum lugar do seu projeto.