I have DHCP Server running on my pfsense with both LAN and VLAN20, on my pi-hole I can see the names resolving for LAN hosts, but al the hosts from my VLAN20 only shows IP Addresses.
Those results would further confirm that your 192.168.20.1 / 192.168.1.1 isn't aware of any of your hostnames, just its own.
A DHCP client may present a hostname during DHCP lease negotiation, but there is no requirement that a DHCP server must also register those names with a DNS server.
While the firmware of most routers would do so, there are those that won't (e.g. some of Ubiquiti's and Microtik's models that would use ISC's DHCP implementation).
There may be ways to work around this on your router, but they'd be specific for your router and firmware (I've provided two links to solution attempts I'm aware of for the manufacturers I've mentioned above ).
If you cannot find a way to educate your router, you could consider to create respective Local DNS Records within your Pi-hole.
EDIT:
Just to be sure, you probably should also check your pfSense settings for allowing port 53 UDP/TCP to your gateway addresses.
I don't actually think they are blocked, as that usually would result in a time-out, and not in NXDOMAIN as a valid answer, but that may also be fabricated by some clever firewall rules (e.g.by redirecting DNS requests rather than blocking them).
In past I had all the Amaxzon devices on the same network with static IP's, and DNS mapped to 192.168.1.254 that is my Pihole,at that time the host names showed up in pihole clients list. However recently I decided to split it and created a VLAN20 for all the Amazon Devices to keep them away from my LAN Network so the complete VLAN20 is pointing towards the Pihole.
So basically it is only VLAN20's IP's that are showing up in the table and the PiVPN Clients.
Not sure if it is related to my DNS Resolver on pfsense, although it should not since that is only for resolving upstream.