IPv6 also deals better with packet headers, so it's easier to calculate for routers. I suspect however this will make more of a difference for high end routers with lots of traffic.
As others have mentioned, the dual-stack transition does require more resources. Then again, you can implement NAT64 (or 464xlat), which seem to become more realistic/robust/more widespread solutions (running dual-stack also means managing two layers of routes, two layers of firewalls, etc).
(Disclaimer: this is not my day job, I just find it lots of fun to play with on my local network and the Montreal local city mesh.)
It strikes me that it's more likely a lack of strategic investment in infrastructure.
Routers using TCAM seem to max out between 1-2M routes (divided across v4, v6, MPLS, etc). More recent routers are using slightly more flexible processors so there's some hope but the router product cycle is fairly lethargic.