Wide open field there.
It could be anything from hardware, to cables, to configurations, to having 'Auto-negotiate' turned off somewhere to the protocol stack, to memory, to ... well, you get the picture?

Start first by running some simple raw speed tests on both boxes, see how they behave.

Note: Run the tests locally in controlled circumstances, not a test site on the net. Even just copying a large file from both boxes to a 'Test' machine over the network might show something.