SSH implements a tunnel in which information is only **forwarded* to or from the remote or local system. Therefor it can only to the assigned local address. You can however configure a local private address virtually and bind to it instead of 127.0.0.1.
sudo ifconfig eth0:0 10.0.0.1 up
sudo ssh -g -L 1234:10.0.0.1:1234 email@example.com
In order to keep the IP address you need something like l2tp. Note that port forwarding in these cases of NATs is called IP masquerading and by definition loses information about the original IPs when it is sent over the tunnel. Instead you'd need to encapsulate forward packets including their source into something like l2tp and THEN forward that through the tunnel then decode it on the other side.