Solved: The issue was using a virtual MAC address when running PFSense on a single NIC (router on a stick).
When I was running with the virtual MAC, the NDP table showed my physical MAC still on my external VLAN interface. So, the NDP table wouldn't populate with the MAC of my cable modem.
When I changed to another virtual MAC, it wasn't fixed.
When I changed to my physical MAC, it worked.
The "right" answer is to have a dedicated external NIC, I know this. I'm betting it isn't just the virtual MAC, but the combination of running a VLAN for my external interface AND a virtual MAC.
What is the best way to submit this bug?