So this isn't really a network question at all, but rather how applications handle the syn synack ack handshake. If memory serves correctly IE is known to strip off the syn and just jump to synack, which tells the web server that it got it's request (even though it never sent one). This method has been used for years, and as some have noticed a quick response time from web servers.
As you might be aware the SYNACK is suppose to be sent from the responding server after the SYN. However when just a SYNACK is sent from a host the server thinks it had already established a handshake, and so just serves up the page requested.
Typically you the surfer would type in a URL and hit enter, the SYN request is made to the server. Then the server responds with a SYNACK, and your host with an ACK. The handshake is complete. As you can see jumping right to the middle of the handshake kills part of the process allowing browser to appear have faster response time. The the responses should be the same, just not initally...
As for networking portions, Windows or Mac. They can each send and receive data at the same rate since they all use the 802.x standards.