Há prós e contras.
VPN pode encapsular todo o seu tráfego e você não precisa do seu aplicativo para suportar o proxy de meias. E você não precisa configurar cada aplicativo para usar o proxy SOCKS. No entanto, como muitas VPN usam um protocolo IP específico, nem todos os Wi-Fi públicos são compatíveis. E muitas vezes pode ser bloqueado facilmente.
O SSH, por outro lado, é baseado no TCP. Normalmente você pode usar o túnel SSH em qualquer Wi-Fi público. No entanto, como mencionado acima, seus aplicativos precisam oferecer suporte ao proxy SOCKS (ou você usa ferramentas especiais de proxy, como ProxyCap). Enquanto todos os navegadores suportam proxy de socks, muitos aplicativos menos comuns não suportam proxy de socks. Mesmo o Adobe Flash rodando dentro do navegador nem sempre obedece ao proxy.
Desde que você mencionou o Android, o proxy SSH não é suportado nativamente. Todas as soluções que conheço exigem o enraizamento do telefone. O Android tem suporte nativo para vários protocolos VPN. Mas na minha experiência, é bastante buggy. Há também soluções VPN de terceiros, como o AnyConnect da Cisco, e nenhum enraizamento é necessário.