Eu realmente não encontrei uma solução de propósito geral para esse problema. O que acabou funcionando no meu cenário específico (provisionamento via Vagrant) estava usando um manifesto Puppet para essa etapa de provisionamento específica, o que foi fácil, já que você só precisa especificá-lo na configuração do Vagrant após o provisionador Shell:
"pecl-install-oci8":
command => "pecl install oci8",
user => root,
timeout => 0,
tries => 5,
unless => "/usr/bin/php -m | grep -c oci8";
Por alguma razão que ainda não descobri, o fantoche instala o oci8 sem problemas.
E quando eu fiz isso, eu carreguei todo o meu script para um manifesto Puppet, mas isso é fora do assunto.