It's the fact that they only focus on infrastructure. IaaS is their bread and butter and it's what keeps them running and going with companies that don't know anything better than servers and storage, to migrate their workloads (the peaks and valleys kind) into the cloud to save money and be agile.
The next generation is a step beyond that, and it's what Microsoft, SalesForce and Google are building for -- PaaS. The idea that you manage fleets of servers is an archaic one, and the next generation will be writing against an API that manages all of that for you. Azure's Service Fabric, Google's AppEngine, SalesForce's Heroku -- those are the future of cloud computing. It's also a future that AWS doesn't have represented at all.
I am a fan of AWS technologies in their current state and the problem they solve for. But it's a problem that takes EXISTING methodologies and infrastructure and merely replaces them. It does not help prepare for the next generation of developers who grow up with the idea that this is all a commodity and they just want their code to work and execute, and have a smart engine behind it figure out all the needs for their app (be it data, network, power, cooling, memory, etc).
In that sense, Microsoft is far, far ahead of the others and as developers start to change their tune in their practices, we'll see that uptick for Azure happen. In the meanwhile, AWS is a decent place to put your existing servers and storage type of needs.