Você está correto, declarações preparadas de verdade devem ser suportadas pelo servidor. Um preparado real significa consultar o banco de dados em duas etapas.
O primeiro passo consiste em enviar um modelo de consulta, que o servidor pode pré-compilar. O mecanismo de banco de dados também prepara com antecedência o plano de execução (principalmente quais índices serão usados para atender a consulta real).
A segunda etapa é fornecer valores reais aos espaços reservados e executar a consulta real com esses parâmetros.
Isso normalmente permite a execução mais rápida de várias consultas semelhantes, porque 1. a consulta já foi pré-compilada (o plano de execução já está calculado) e 2. apenas os valores dos parâmetros são enviados posteriormente.
Uma consulta emulada é apenas um açúcar sintático, que permite apenas o envio mais fácil (não a execução mais rápida) de várias consultas sucessivas e semelhantes. Instruções SQL completas são enviadas ao servidor toda vez que uma consulta emulada é executada.
Quando o servidor não suporta instruções preparadas reais, ainda é recomendável usar instruções preparadas emuladas, porque o driver ainda cuida dos valores de escape para você, tornando a injeção de SQL menos provável.