if I would be Oracle programmer, I would have little choise than to:

read data into memory array, i.e buffer
send data from buffer to pipe/socket/etc. (i.e. to user)

The only question is: does it makes sence to search for a free space in a LRU buffer, as it consumes some time (LRU latch contention, search for free space in buffer, etc, etc).

If I would be an Oracle programmer, I would do this processing because of probability that the data in cache may be hit by another user/query.

However, there are hints, that may tell Oracle a little bit how to do the processing of storing data in a chache:
CACHE, NOCACHE, FULL