FreeBSD does indeed support checksum offloading on some NIC chipsets; you can (temporarily) disable it by running "ifconfig xxx0 -rxcsum -txcsum" via /exec.php (where xxx0 is the BSD name of the interface in question).
This could in theory be a bug in ipfilter, as it has a long history of bug-ridden ICMP NAT code. However, there haven't been any new fixes since 4.1.28 (which is what m0n0wall 1.3b11 uses).
Also, it appears that your DSL modem is doing the PPPoE - otherwise m0n0wall would (or at least should
do TCP MSS clamping, avoiding MTU problems (at least for TCP). In that case, I recommend that you set your DSL modem to bridge mode and have m0n0wall do the PPPoE (to get rid of the double NAT, if nothing else).