Acontece que o dev.domain.com estava apenas olhando para o www.domain.com o tempo todo e lendo o arquivo de configuração do banco de dados correto de lá, em vez de dev.domain.com. Isso acabou sendo uma questão de ordem de arquivo .conf onde dev.domain.com estava sendo lido após www.domain.com devido ao esquema de nomeação .conf. Eu renomeie domain1-dev.conf para dev-domain1.com e tudo funciona muito bem agora, pois dev.domain.com está sendo lido antes de www.domain.com, que é como um catchall.
Isso não tem nada a ver com portas ou qualquer coisa fora das configurações do VirtualHost do Apache. Veja o que usei para ajudar a determinar a ordem de leitura:
$PATH_TO_APACHE_DIR/bin/httpd -S