Andrej Kobal from Astec shared a few interesting facts during the 3rd Slovenian IPv6 summit: they were deploying a pilot IPv6 subnet in a large network and wanted to retain tight control over the IPv6 address assignment (some people don’t consider random address chasing embraced by Windows the best use of their time), so they’ve decided to use DHCPv6. Bad luck: DHCPv6 can’t tell you the IPv6 address of the default router (like DHCP does). You need ICMPv6 RA (part of IPv6 Neighbor Discovery) to figure out who the router is.
If you want to protect the integrity of your network, you need to deploy SeND or RA guard as well as DHCPv6 guard on your switches. These features are not yet available on many L2 switches ... Catalyst 4500 and Catalyst 6500 are a notable exception. Catalyst 3750 also supports IPv6 port access lists.
OK, so maybe SLAAC (RFC 4862) is the way to go. Not really: you cannot pass the address of the DNS server in ICMPv6 messages unless you use the experimental extensions defined in RFC 5006, not to mention the inability to create dynamic reverse DNS mappings (which any decent DHCP server should support). Furthermore, don’t count on RFC 5006 being supported in mainstream operating systems right now (if you’re really brave you could deploy open-source freeware in your production network).
For more autoconfiguration gotchas, read the comments in this blog post.
Bottom line: to get what DHCP gives you in IPv4 world, you have to use two protocols in IPv6 world.