How are IPv6 addresses assigned in the first place? Is the router providing stateful DHCPv6? SLAAC addresses are generally static unless the originally generated address was taken by another device (the chances of this are practically zero).
You can assign a static IPv6 address on the host machine of pihole with dhcpcd5 by adding static ip6_address=<address_of_choice>
to /etc/dhcpcd.conf.