@reg_ed I haven't gone back and confirmed, but if the alphabetical order isn't a direct consequence of the way pf processes wildcard anchors such as 'spam/*' then it's a default chosen for consistency with it. I think implementing (a) or (b) woudn't be very hard, everything's in PHP and seems nicely "clean" to me, but there's significant overhead to getting a sufficiently firm grasp of pf, how pfsense is using it, how it's all coded up, setting up a dev environment and machine.... Literally today I'm about to pull an old Alix board out of a drawer just so I can experiment to fill in the gaps of BSD documentation, which is well written but sparse on details.
As I've dug deeper in pfsense, I've found several places where the conceptual overlay of pfsense onto underlying BSD tools breaks down without warning (documentation). I have a few posts in these forums I need to follow up on, but what I've learned is that to answer questions I have about pfsense behavior, look under the hood, rather than expect pfsense to make sense as itself. Besides this issue of interface groups, there is no positive concept in BSD dhcpd of 'no gateway' (dhcp option 3) and the pfsense 'none' flag is permitted in pools, where it (and other pfsense dhcp concepts) get into conceptual trouble with inheritance. And floating rules 'out' on WAN work nothing like expected, and yet 'both' rules work like 'out' rules should (plus a superfluous 'in' direction) which has got to be a contributing factor to why floating rules have a reputation as confusing and hard to get right.