As there's no nice way to find out what your computer decided to configure itself with the RA/SLAAC, there's no nice way to route your /64 or /48 to it.
It's still a point to point link, right? As such, it should be able to take routes without an actual nexthop address:
ip -6 route add 2001:470:1f09:12d::/64 dev pppX
But then again, I'm not sure this qualifies as "nice". Alternatively, you could use PPP Link-Local Address configuration to set peer address to something like fe80::2, and then route user's /64 or /48 through it.
Speaking on the topic, I'm having the same problem with London server. I can ping 172.31.255.1 for 5 minutes after PPTP is brought up, then it dies off. Pings are still sent out through the PPP link, but no answer is received:
# tcpdump -i ppp1 -nnp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ppp1, link-type LINUX_SLL (Linux cooked), capture size 96 bytes
16:45:30.159453 IP 184.104.53.221 > 172.31.255.1: ICMP echo request, id 31255, seq 1, length 64
16:45:31.158497 IP 184.104.53.221 > 172.31.255.1: ICMP echo request, id 31255, seq 2, length 64
16:45:32.158344 IP 184.104.53.221 > 172.31.255.1: ICMP echo request, id 31255, seq 3, length 64
16:45:33.158194 IP 184.104.53.221 > 172.31.255.1: ICMP echo request, id 31255, seq 4, length 64
However, the tunnel doesn't time out and go down eventually, because LCP still works as it should (ppp0 is PPPoE):
# tcpdump -i ppp0 proto gre and host 216.66.80.26 -nnp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ppp0, link-type LINUX_SLL (Linux cooked), capture size 96 bytes
16:44:54.383500 IP 216.66.80.26 > 188.x.x.x: GREv1, call 0, seq 297, length 24: LCP, Echo-Request (0x09), id 31, length 10
16:44:54.383674 IP 188.x.x.x > 216.66.80.26: GREv1, call 53504, seq 1442, ack 297, length 28: LCP, Echo-Reply (0x0a), id 31, length 10
16:44:54.544181 IP 216.66.80.26 > 188.x.x.x: GREv1, call 0, ack 1442, no-payload, length 12
16:44:59.387813 IP 216.66.80.26 > 188.x.x.x: GREv1, call 0, seq 298, length 24: LCP, Echo-Request (0x09), id 32, length 10
16:44:59.387957 IP 188.x.x.x > 216.66.80.26: GREv1, call 53504, seq 1443, ack 298, length 28: LCP, Echo-Reply (0x0a), id 32, length 10
16:44:59.547716 IP 216.66.80.26 > 188.x.x.x: GREv1, call 0, ack 1443, no-payload, length 12