The biggest IPv6 gotcha is that it is not compatible with IPv4 networks. You can't just graft IPv4's address space into IPv6's larger address space, which is a serious drawback to the protocol. The packet header is different, frame sizes are different, checksumming algorithms are different, flow control mechanisms are different, etc.
The larger frame size alone makes IPv6 more efficient, but since the Internet at large doesn't support IPv6 end-to-end, you wind up having to encapsulate IPv6 traffic into IPv4 packets anyway. The added costs in terms of efficiency and administrative overhead to make it work negates all of its advantages, and basically ensures that the world will never adopt IPv6 until it absolutely has to.
Meanwhile, we keep inventing new ways to squeeze more and more head room out of IPv4's "limited" address space. Virtually everybody is behind a NAT gateway now. ISPs are using ever-more sophisticated VLANs and address hopping techniques to move available address pools to wherever they're needed on the fly. All of this keeps extending IPv4 beyond its design constraints and will likely continue to do so for the foreseeable future.