Hollow Man,
You are correct that "clients" don't expressly need to forward ports to join, however if NAT-filtering gets in the way (some routers allow you to configure it see this thread
https://forums.sinsofasolarempire.com/302422/page/3 and my post REPLY #63 for an example of a router that allows NAT-filtering to be controlled) and if your router
doesn't allow you to "relax" it's NAT-filtering independently, then in many cases the same sort of result can be achieved by port-forwarding. Which is why I recommend both clients and hosts to follow the steps in my guide (at least until version 1.1

)
Below are examples of the types of problems (non-relaxed) NAT-filtering can cause for SINS...
/quoting myself from my sticky in the Technical forum (reply #31)
Example of mis-configured CLIENT:
client sending TCP 34123 (random high port) --> host rejects on TCP 6112 (because traffic did not originate on client TCP 6112)
- client needs to forward/allow access out on correct port number by relaxing his/her NAT (read my guide on NAT and you'll know what you need to do, if you need help doing it or understand it better I'll be glad to help)
Example of mis-configured HOST:
client sending TCP 6112 --> host accepts on TCP 6112 sends back to client on TCP 32226 (random high port)
client now rejects incoming TCP 32226 from host
- this scenario happened because the HOST doesn't have his/her NAT relaxed enough and although he/she has the ports forwarded for "incoming" traffic, their router/firewall NAT's the "outgoing" packets thereby ruining the "connection"
Example of monk's hosting :
client sending TCP 6112 --> Monk accepts on TCP 6112 and sends back to client on TCP 6112
- in the above example all communications work as planned and everyone has an enjoyable game!
/end quoting myself
....some days I feel like I'm living in the matrix, one day I'll look at my wife and kids and see 0's and 1's hehe
the Monk