Finally, I came to the conclusion that this is impossible to do. I've tried with iptables until I realized that iptables only reject and accept packets, but do not route, what I was needing was more about routing. I've looked into bridges but it seems to be more about sharing the internet from the computer again. Then I looked into routing tables for Linux, but it seems like you can only have one valid default route and it's impossible to route "from interface to interface" and if the 4G is in the default routes, when the ethernet connection fails you will drain the 4G connection. I've also read a little about Vlan but it doesn't seem to be useful in this situation.
All the time I was doing those tests, the Network manager of Ubuntu was difficult to overcome. So I also tried in Debian, which is not relying on the Network Manager, and it was not possible either. I gave up and I will use a Beaglebone for the 4G-USB to RJ45 "converter". If someone thinks that this is possible to do I would be really curious to see the solution, but to my knowledge and research I think it's not feasible. It's as if this setup required two separate routing tables which is not possible, once there is a network, the whole PC must be aware of it, it cannot blindly relay it to another port.