No tenía nada que ver con el proveedor ODP.NET. El problema era que la biblioteca que usamos para crear conexiones para nosotros (que, por supuesto, no usa Oracle SQL Developer, y que no usé cuando probé el proveedor de Microsoft) siempre ejecutaba las siguientes declaraciones antes de hacer nada:
ALTER SESSION SET NLS_COMP = LINGUISTIC
ALTER SESSION SET NLS_SORT = BINARY_CI
Estos hacen que Oracle no distinga entre mayúsculas y minúsculas. Pero también inutilizan todos los índices convencionales. Debido a que estábamos consultando desde una Vista, tenía un orden incorporado. Y debido a que no somos dueños de la base de datos, no podemos hacer que los índices sean lingüísticos para solucionar el problema de rendimiento.
Proporcionar una forma de no ejecutar esas declaraciones en este escenario (raro) solucionó el problema.