Non aveva nulla a che fare con il provider ODP.NET. Il problema era che la libreria che utilizziamo per creare connessioni per noi (che, ovviamente, non è utilizzata da Oracle SQL Developer e che non ho utilizzato quando ho provato il provider Microsoft) eseguiva sempre le seguenti istruzioni prima di fare qualsiasi cosa:
ALTER SESSION SET NLS_COMP = LINGUISTIC
ALTER SESSION SET NLS_SORT = BINARY_CI
Questi rendono Oracle senza distinzione tra maiuscole e minuscole. Ma rendono anche inutili tutti gli indici convenzionali. Poiché stavamo eseguendo query da una vista, aveva l'ordinamento integrato. E poiché non possediamo il database, non possiamo rendere gli indici linguistici per risolvere il problema delle prestazioni.
Fornire un modo per non eseguire tali istruzioni in questo (raro) scenario ha risolto il problema.