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?
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.