A ordem de precedência para resolver nomes TNS no ODP.NET, Driver Gerenciado é esta (veja aqui):
- alias da fonte de dados na seção 'dataSources' na seção do arquivo de configuração .NET.
- alias da fonte de dados no arquivo tnsnames.ora no local especificado por 'TNS_ADMIN' no arquivo de configuração .NET.
- alias da fonte de dados no arquivo tnsnames.ora presente no mesmo diretório que o .exe.
- alias da fonte de dados no arquivo tnsnames.ora presente em %TNS_ADMIN% (onde %TNS_ADMIN% é uma configuração de variável de ambiente).
- alias da fonte de dados no arquivo tnsnames.ora presente em %ORACLE_HOME%\network\admin (onde %ORACLE_HOME% é uma configuração de variável de ambiente).
Acredito que o motivo pelo qual seu exemplo funciona com Oracle.DataAccess, mas não com Oracle.ManagedDataAccess é que a configuração baseada no registro do Windows não é suportada para este último (consulte a documentação) - a instalação do ODP.NET define uma chave de registro ORACLE_HOME (HLKM\SOFTWARE\Oracle \Key_NAME\ORACLE_HOME) que é reconhecido apenas pela parte não gerenciada.