We can use MetaMask to sign calls to be sent to relayers. We are signing a message, rather than signing a transaction (as in the case of MetaMask/metamask-extension#3475)
It depends what abstraction you need for your users on whether MetaMask is suitable or you want to implement a persistent key.