When I last looked into this, it wasn’t possible to due to limitations in Android.
Basically, the tethering and VPN systems each assume that they’re the only ones that need to manage network routes so they stomp over each other’s routing tables (VPN breaks routing for tethering, tethering breaks routing for VPN).
Someone on a forum claimed that (if you’re rooted) you can manually setup the iptables rules to make both work, but that’s not really a reliable solution.