I just checked again, and the reason why this method is possible on Linux (and probably other Unix's & OS X) is because you don't bind a port < 1024. If you just try to connect a socket (TCP or UDP) to local host, it bypasses all port checks because the source port will be in the ephemeral range. This is why you can request a web page from the local host (running on port 80) without your browser requiring any extra privileges.
I don't know how you came to the conclusion that low port numbers don't work on OS X, but it can't have been a permission issue. Port 0 is probably invalid because of its special status.