Here´s a quick summary of the info from macosxhints.com, just in case the link dies:
The trick here is that you must use an ifconfig command in the rc.local script. This means that at a later point in the process, the GUI-specified interface configuration will be done redundantly. If you do not do this, the route command will fail, because there will be no device configured for the bridging subnet.
Here is the critical portion of the rc.local script:
ifconfig en2 inet 11.22.33.5 netmask 255.255.255.252
route -n add 11.22.33.xx/xx 22.33.44.x
Once you understand that (1) rc.local is still the best place for this (not the GUI), and (2) you have to do an early ifconfig to help the route command do the right thing, adding static routes is really simple. Now, you could probably do it in LaunchDaemons or StartupItems, if you do ifconfig before route, but in truth, no daemon is launched here, and StartupItems is deprecated, so rc.local may be the best option.
It goes without saying that you have to make sure that the ifconfig in rc.local matches what the GUI assumes about the interfaces, otherwise you're in big trouble.