that's how our ETH processing works at the moment, we derive different BIP44 addresses and the customers pay to them. But that approach is possible only because the transactions fees are paid in ethereum as well; you cannot pay the tx fees in ERC20. With smart contracts someone else can pay the fees, which makes it ideal for our use case.
There are two places where gas is paid:
1) when the customer pays to these intermediate addresses
2) when the funds are moved from the intermediate to the final address
1) is always paid by the customer that initiates the payment.
2) can be paid by anyone, as these contracts are permissionless and anyone can interact with them. At the moment Coinbase picks up the tab for doing this, but we will likely not be doing this in the long-term