Other users have used similar methods to ones suggested to you: (e.g.)
I am guessing other people have this problem as well. I have setup PiHole or AdguardHome on a separate server and using the router as DHCP. The first issue is that the router will force the routers IP as the IPv6 DNS server over DHCP and there is no option to change it on the LAN side only. I...
www.snbforums.com
There are alternative methods for running script on linux devices such as RPI, that periodically run to check to see if the IP address has changed, and if so, it does the appropriate modifications on the client then and there. However for scripts like this:
Checks the Pi-hole server's current IPv6 address and updates the IPv6 address configured in /etc/pihole/setupVars.conf if necessary. - stevejenkins/pihole-utils
github.com
The problem with client side updating is that it would have to be configured manually on the router as well.
I can understand the OP's desire to run a ULA address assignment, it is to ensure the whole addressing assignment doesn't get borked between clients and local dns server. In this instance, using a dynamic dns provider would only be benefitial if the user was talking about a cloud based managed DNS solution.