I believe this topic is still alive because there's not a clear answer. For example, I can't disable IPv6 DNS from my router. Also, I have a solution and I have figured out what Chrome on Android is doing.
First, what Android Chrome is doing. When Android gets the DNS servers when it connects to Wi-Fi it gets two addresses. The first, is pi-hole (for example 192.168.0.200) and the second DNS is typically a backup in case pi-hole is down (something external like 1.1.1.1). Chrome does a DNS lookup for an ad domain and pi-hole blocks it properly. But, Chrome then tries the secondary DNS because the first one didn't return a result. So Chrome then gets the ip of the ad domain from 1.1.1.1 which then causes the ad to show.
I've been able to confirm this action by changing my second DNS server to the Wi-Fi port on my pi-hole (IP 192.168.0.201 in my case). Now, when Android tries both DNS 1 & 2 for an ad domain, they both fail because both are pointing to my pi-hole.
While this does create a situation where if the pi-hole fails no DNS works, that has yet to happen. But, it does pinpoint the source of the problem. Android Chrome is not doing DNS correctly, it's trying DNS 2 when we're on purpose causing the DNS 1 lookup to fail.
Good luck getting Google to "fix" this, as they probably see it as a "feature". But the short answer is to point both DNS 1 and DNS 2 to your pi-hole (Ethernet port and Wi-Fi). If you don't have both Ethernet and Wi-Fi on your pi-hole, just set DNS 2 to 127.0.0.1 which is your localhost.
Tim