Eh. I don't entirely buy that - most of Nokia's work (now obviously less relevant than it was) is pretty well aligned with upstream, and despite the change in course I think it's hard to argue that they failed to ship product.
The main reason (from my perspective) that Android is more attractive here is that it moves a lot of the responsibility away from app programmers - they can ignore a bunch of power saving and the OS looks after them. The upside of that is that it's much harder for a poorly written application to interfere with your battery life - the downside is that it makes it much easer to have a higher idle (but not asleep) power consumption. But making compromises that favour app developers results in a larger number of applications, and that makes it a more attractive platform for everyone.
Android may actually be one of the first good examples of Worse is Better in the Linux kernel sphere. The MIT people thought UNIX's signal handling code was awful. The Linux people (mostly) think wakelocks are awful. No matter how much we may dislike it on a technical front, I think the wakelock approach is sufficiently simple that it's going to outcompete other solutions.