There's something I vaguely remember about the forcedeth driver, that its not *totally* supported/stable, and often when it says "static", it means "autonegotiate".
Now there are known problems with autonegotiation; different manufacturers do it differently, and despite it being useful, its not a real standard, which is why you should *always* set server NICs to "static".
My guess here is that you have a NIC which says it's running static, but is lying and is really running autonegotiate. Then the autonegotiate is failing, and the two ends are defaulting to the only thing they can agree on, 10/half.
You might want to check your cable, too. Make sure its a completely vanilla, straight-through, good-quality cable. I *know* it works with Windoze, but check it anyway...(pins 1-1, 2-2, 3-3, and 6-6 minimum)
Is there an Nvidia proprietary driver you can use? I know it goes against the grain, but it may be the only solution...
The reason that Windows works faster is that when it says 100/full, it means it, there is no "hidden" autonegotiate that you can't control