OpenBSD 6.5 has an egress keyword, which I believe is a tag/label assigned to each interface that has a default route defined.
pass in on egress proto tcp from any to any port smtp \
rdr-to 127.0.0.1 port spamd
[see https://man.openbsd.org/pf.conf for details]
// discussed over falafel at BSDCan.
'egress' isn't strictly a pf keyword. It's just another ifgroup. You could emulate it by adding your egress interfaces to the group already.
OpenBSD add any interface with a default route to that group (as I understand it). If we do that too it'll automatically work with pf.
Look for IFG_EGRESS in openbsd/sys/net. It should be straightforward enough to add this to freebsd as well.
(Reassigned to pf@, because this is not on my short-term todo list.)