Who prefers which and why?
If I would have to make an order from favorite to least liked I would say:
1, IPTABLES
2, OpenBSD PF
3, IPFW
4, NPF
I started this discussion because I simply hated NPF for it's weird syntax that a FW ruleset looks like an object oriented program especially when you compare it with traditional fw rules like Cisco ACLs. So I had this one server I have configured with NPF for some basic tasks like 2 years ago and never touched it since, it was always on the bottom of my TODO list to implement some rules what needed (like pull blocklists from some providers and automatically add them once a week to a ruleset). Surprisingly I got to like it and I was even surprised how quick I got all my modifications I planned done.
For me IPTABLES is just the king of kings mostly because I using it since almost it exist and before that I was using ipchains so I got used to it. It has tons of modules and functionalities and this is the FW I have the most experience with I have setup countless of simple and very compled (over 1k rules) fw setups for servers, workstations, gateways with it.
Like until the point you just need some regular fw for a base machine to allow some services inbound and all stateful outbound it does not make a difference I would say FreeBSD with IPFW shines there, all you need is add this to your RC.CONF and your done:
# Simple firewall
firewall_enable="YES"
firewall_quiet="YES"
firewall_type="workstation"
firewall_myservices="6666 6667 6668 6112 6113"
firewall_allowservices="any"
firewall_logdeny="YES"
pflog_enable="YES"
However doing something more complex when you have multiple L2 VPNs bridged into a server where you have to direct traffic using physdev to different chains depending on which tap interface of the bridge port does it come in and you have to do ratelimiting, snat, dnat, logging, filtering out some stuff like dhcp traffic with ebtables underneath and marking packets for the traffic shaping I lose confidence in using other firewalls than iptables.
Moving over to OpenBSD's PF I just love it's syntax and simplicity and what I love about in OpenBSD a lot that they don't try to change things around every year or so. If I invest couple of days to write a decently large pf.conf I'm not worrying that it will not work in OpenBSD 7.0 anymore.