why don't you guys use extended public keys instead of creating the smart contracts? wouldn't that allow the deposit of tokens to different addresses?
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.
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