I'd have to agree with heper on this but here are some other possibilities and suggestions:
What hardware platform are you using for ESXi?
Are you using Intel NICs?
Stick with E1000 it won't do you any harm if your WAN speed is 40Mb/s.
Have you changed the cable between the modem and ESXi?
Did you lock the speed of the WAN NIC to 100Mb/s or is it autonegotiate? A mismatch between that NIC and the modem could be slowing you right down to 10Mb/s.
Anything strange in the ESXi or pfSense logs?
Hardware is:
Intel DQ67SW (with onboard Intel 8275LM NIC)
Intel Xeon 1230
5TB passthrough on onboard controller (Intel)
1.25TB datastores for VM's on SIL3114
2x Intel 10/100/1000CT adapter (8279L or something - 1 for LAN, 1 for WAN)
One vSwitch is PPPoE only with a straight cable to the modem.
If I plug a dedicated MaxTerm 8300B terminal PC into it, I sync fine at 40Mbit.
One vSwitch is for management traffic and LAN traffic.
E1000 and VNXNET2 Enhanced both have the same performance (identical).
I have locked the vSwitch configuration to 100Mbit FULL - I'm not sure if that controls the NIC, but I assume so.
Traffic shaping I have configured nothing, but likewise it can't be this because I get the same results even if I passthrough the adapter using vt-d.