Hi jamin, first of all welcome to WebmastertWorld!
Most NAT routers can only identify packets on their IP/port pair and do not parse incoming messages based on the HTTP headers. You should therefore either use an unique IP/port pair for each service, or use any of the options you mentioned. Sharepoint is often used in a controlled environment with a limited number of users. Would it therefore be an option to use a unique port number for each of these installations? Like
www.example.com goes to 192.168.1.80 (default HTTP port 80)
sp2007.example.com:81 goes to 192.168.1.20:80
sp2010.example.com:82 goes to 192.168.1.10:80
The Sharepoint users have to add the alternative port number to the URL when they access your system, but with this solution you can do all the routing directly in your router, without having to think about complex software setups.