This is an interesting idea, and would essentially require users be okay with waiting for deposits/withdrawals, perhaps we could do them once per week. Users deposit to smart contract on L2, or request a withdrawal from smart contract on L2, and once per week L2 smart contract exchanges funds between L2 and L1.
This also ties back into the idea we discussed a while back on the forums about having a bulk-deposit contract; this one would just be on L2. So in that same vein, if there are enough funds sitting in the L2 deposit contract, then a withdrawing user could just receive those funds, instead of a transaction needing to be sent to the L1 contract.
This begs the question, though: for small users, would a bulk-deposit/withdrawal contract on L1 be a better solution? Because, my understanding currently is that to get on L2, a user would need to make the contract interaction on L1 to move to L2 anyway. So maybe a bulk-deposit contract on L1 is still the better solution.