Do exchanges use an intermediate address when fulfilling transactions or is it always user to user when buying/selling between cryptocurrencies?
I believe exchanges mostly hold Bitcoin in addresses that belong to the exchange, not to their customers.
This has benefits for them:
They can then transfer Bitcoin amounts between different accounts for users of their service without the need to create any Bitcoin transactions and pay associated mining fees.
They can then create aggregate Bitcoin transactions which reduce transaction fees when paying to non-customers or into wallets not controlled by the exchange. For example they can create one transaction with one input and ten outputs instead of ten transactions each with one input and one output.
There are implications for the customers of the exchange
The exact details will depend on exactly which "exchange" you are using and may change over time.
If you use the "exchange" to pay BTC to someone who is not a customer of the same "exchange", there will be a record in the blockchain but it may not be possible to identify which customer of the exchange initiated the transfer.
If you use the exchange to buy BTC with USD or ETH, or vice versa, there will generally be no transaction recorded on the blockchain if, as many do, they keep your account balance and other details in a database that is completely separate from any actual cryptocurrency-wallets.
This is analogous to the distinction between a "custodial-wallet" and a desktop-wallet. WIth the first you are not the actual owner of any Bitcoins, you are effectively the creditor of a debt denominated in Bitcoins.