I've no idea why SLAAC would prevent you from doing policy routing - the prefix is deterministic.
In IPv4 I presume you guessed who each host is by some sort of DHCP registration. For IPv6 you would use either NDP, or perhaps even way more secure SEND enhancement with PKI instead. Of course static assignment still just works, including in NDP/SEND. (e.g. by MAC address or per link)
RIPng/OSPFv3/IS-IS/EIGRP can also tell other hosts which route you prefer packets to return by with better granularity and dynamically. This works even better with v6 since global addresses are always available.
Also perhaps I missed something in your reply, but policy based routing - the definition I have of it - encompasses more than routing different subnets via different WANs. Ie routing based on destination port, IP DSCP flags, WAN utilisation etc rather than just by source.
And as I’ve mentioned elsewhere, the cost and complexity of running routing protocols is a non-starter for many small and/or low margin businesses. Think retail or fast food or fuel etc.
Another issue with SLAAC/lack of NAT on the LAN clients is you can’t do policy based routing on the router, eg I’ve got a fast fibre but it’s costly to use, I’ve also got a cheap and cheerful cable/DSL line that I use for backups and FTP. I want to route all requests to my backup service (which has a domain that resolves to a public IPv6 address) via the cable/DSL and everything else via Fibre. Easy to do on IPv4.