O problema definitivamente é devido ao ODP.NET. Se eu desabilitar o pool de conexões o problema não se manifesta. Para cada conexão o ODP.NET parece criar 2 threads e no intervalo de 3 minutos (como visto nas imagens) o ODP.NET faz algumas tarefas domésticas, mas por algum motivo aloca memórias que não são liberadas imediatamente.
É fácil de reproduzir. Basta criar um aplicativo simples que quando um botão é pressionado uma conexão com um banco de dados Oracle é aberta e um procedimento armazenado é executado. Você notará o padrão da primeira imagem. O padrão das demais imagens se deve ao número de conexões criadas pelo aplicativo.