A common misconception about pfSense is that it is intended as a rival to m0n0wall as a BSD-based firewall system, since they are similar in structure and goals. This is not the case; some developers even contribute to both projects. m0n0wall is targeted at a specific level of hardware platform, which is the Soekris or Wrap (a 486 133MHz with 64 or 128 Mb RAM and low power consumption). pfSense requires 128 Mb ram. Likewise, m0n0wall gets away with a >= 10Mb CF card, while pfSense really needs a 256Mb card or bigger.
pfSense is better in that it has more features, however m0n0wall is better in that it is smaller and simpler. Which of the two, m0n0wall or pfSense, you need, just depends on your (system/business) requirements.
Interesting link: BSD Firewalling, pfSense and m0n0wall (PDF – paper delivered at BSDCan2006)