Não confunda OO do Java com PHP. Java é uma linguagem de paradigma único, o que significa que ele faz apenas OO. O PHP, por outro lado, é uma linguagem de paradigmas múltiplos, você pode fazer programação funcional ou OO ou ambos.
Agora não existe uma implementação "ruim" do OO. OO do Java não é uma implementação definitiva que todas as outras linguagens devem ou devem seguir. Existem alguns conceitos definitivos, e ambas as linguagens os implementam totalmente da sua maneira (Java desde o início, PHP desde a versão 5).
Portanto, para responder à sua pergunta: O que o CI faz e o que você está fazendo com ele está certo no mundo do PHP. As matrizes do PHP são uma de suas estruturas mais flexíveis e úteis e é realmente bom usar matrizes sobre objetos quando seus dados são apenas informações (não carregue lógica com eles). Código OO completo não é a mesma coisa que "apenas código OO".
Se você estiver iniciando com PHP, use Java como referência para boas práticas de OO, mas não limite seu entendimento do PHP por causa da coisa "Java faz diferente". Você pode realmente estragar as duas coisas, o paradigma não o salvará se você não entender os conceitos.
Se, em qualquer caso, você achar que Java é mais do seu agrado (como uma preferência pessoal) consulte o Ruby para desenvolvimento na Web, eles estão um pouco mais relacionados.