Out of interest can you say why you're using a /16 for this network, giving you 65.5K available hosts?
The router is at the bottom end at 192.168.0.1 and Pi-hole on the Pi's ethernet port is at 192.168.103.0 and it can reach the router and external servers no problem. Ad blocking is working correctly.
The router is handing out itself as the DNS server, and presumably is using Pi-hole as its upstream as you mentioned. Note that this means you lose the ability to see which clients are making which requests – they will all come from the router and if the network is in fact large, which a /16 might imply, the router might exceed Pi-hole's query rate limits.
The other way you mention, where the router hands out Pi-hole's IP via DHCP as the sole DNS, would allow you to have a granular view and avoid that router rate limit problem, should it arise.
Does the router have some kind of external access, such that non-192.168.0.0/16 addresses can come in, maybe "VPN" in or from a different network also serviced by that router, and make queries of it, which will also be sent to Pi-hole? Your log appears to show an external IP making PTR queries of your subnet, presumably trying to find out hostnames of your subnet IPs.
It's not clear to me what's going on. But perhaps that could explain the perception that it's not working when only responding to queries from the /16 subnet vs appearing to work when responding to any external address.
Can you explain more about it?
You can inspect your own debug log, and the logs at the end of it, with the command below in the Pi-hole's terminal:
sudo less -r /var/log/pihole/pihole_debug.log