The thing with a cron job is that it would likely be every minute at best.
If I connect at 20:25:01 and I have to wait 59 seconds for the next cron pass, it'll probably be noticeable and annoying.
I haven't done pfsense in a while but it shouldn't be too complicated.
I think they still use ISC DHCP? If so, I vaguely remember you could use hooks or something event based instead of checking for leases every x time.
Something like this in dhcpd.conf:
on commit {
execute("/path/to/wg-up.sh")
Now... bringing it down is generally less "urgent" and a cron job that checks the number of leases would be fine. Being more instantaneous in bringing it up but taking your time to bring in down would be beneficial and introduce some sort of hysteresis so it flaps less.