They should be static, if they have any sense. See a blog post of mine on the subject.
Basically, with IPv4, if you have a dynamic address (say 5.6.7.8), and then your connection drops out, and now you are a different address (say 5.8.7.6), then the machines behind your NAT aren't affected, because they're still using a 192.168.0.x 192.168.0.1 gateway thingy.
But in IPv6, what subnet your ISP allocates you (e.g. 2001:db8:1:5678::/64) influences what machines in your LAN (i.e. what would be behind your IPv4 NAT) have as their IP address.
So if your subnet your ISP gives you is 2001:db8:1:5678::/64, then a machine on your network may have an IP address of 2001:db8:1:5678:aaaa:bbbb:cccc:1234. Then, if your connection drops out, and you get a new dynamic subnet, say, 2001:db8:1:9876::/64, then your machines on the LAN will not get the new address scheme immediately, and have the wrong IP address when sending to the Internet. A whole world of hurt.
Really short durations set on the Router Advertisements may help, but there is still a window of breakage, and thus a whole world of hurt that you just don't want to foist onto your customers.
Just think -- you can give out dynamic subnets and conserve address space, but you'll have all hell break loose with the support calls. (My ISP, Internode, is sane and gives out static /60 subnets.)