A execução do PHP como um módulo geralmente é mais eficiente, mas significa que todos os scripts são executados sob a mesma conta de usuário (qual conta o Apache é executado), o que pode representar preocupações de segurança em um ambiente compartilhado.
O CGI é muito mais lento, já que inicia um novo processo PHP para cada requisição que precisa de um, mas pode ser configurado para rodar cada script como o usuário que o possui, o que pode ser muito mais seguro em um ambiente compartilhado.
O FastCGI pode ser mais complicado de configurar, mas chega perto da velocidade de execução do módulo PHP.