With zkSync wallet, token receiver can pay gas fee for the sender.
The target is that token sender can choose to find another account to pay for fee. The another account can be (1) the token receiver's account, (2) sender's another account, (3) third party's account.
In this project, I finished the demo, which is the (1) above, that receiver pay gas fee for the sender.
The key is that there is a relay server, which is just a centralized API server, transporting the sender's signed transaction to the receiver, so that receiver sign the last transaction for paying fees and then submit the transactions batch to zkSync server.
I fork the matter-lab/zksync-wallet-vue, and add a button and some code, so that when user want to transfer token, they can click the button to transfer without gas fee. But he/she must to find another person, simultaneously, waiting the transaction to be submitted by that person. In this case, that person is the receiver who pay gas fee for the sender.