Once 64-bit application allocates enough RAM that 32-bit addresses aren't enough, 64-bit addresses will be used.
There are places in DOA source code, where 32-bit addresses are assumed - in other words, pointers are cut in half.

Example (OracleData.pas):
DataEvent(deFieldChange, Longint(Field));

Meanwhile in Data.DB:
procedure DataEvent(Event: TDataEvent; Info: NativeInt);

I pinpointed other places, but I think you should investigate on your own.