As a follow up to anyone experiencing the same issue, here's how we worked around it in our driver:
We observed from ODBC Tracing that when the Oracle Gateway for ODBC connects to the Microsoft Access ODBC driver it makes a series of calls to SQLGetTypeInfo before attempting to do any query.
The ODBC Trace from Oracle connecting to our ODBC Driver did not show any such calls. This was apparently caused by the fact that our ODBC Driver returned SQL_ERROR to a SQLGetInfo(SQL_MAX_PROCEDURE_NAME_LEN) call, indicating that it does not support procedures, which apparently caused Oracle to abort its initialization sequence altogether.
We adjusted the driver to “pretend” that it supports procedures and to return 256 to this call. After that adjustment was made, Oracle did in fact make the SQLGetTypeInfo calls that it apparently needs to do to learn type information about the driver. Subsequent queries successfully returned data with the correct types.