The recent AWS "compatibility" debates, as well as my own early participation in the DMTF's Cloud Management Working Group has me thinking about the IaaS API space quite a bit these days. One of the things that we're not really discussing as an industry is really around the top level approach to IaaS API design.
The way I view this is that the primary question is one of pure infrastructure utility vs contextualizing the infrastructure resources. Simply using the standard AWS EC2 API is an example of the pure infrastructure utility, and the plethora of solutions that layer on top of the standard EC2 configurations prove that this is a viable utility-based model. Many of these higher level solutions aim to solve the contextual relationship issues that arise out of any non-trivial consumption of EC2 resources. Amazon clearly realized that context is critical as well, since they have provided what they hope are the canonical API solutions for adding context with the introduction of the VPC extensions to the EC2 base API and the creation of their CloudFormation wrapper on top of their ever growing infrastructure utility options.
Looking at the VMware side of the ecosystem, the approach was to start with context first. Within the vCloud API, the VDC is king and all activity takes place within the context of the VDC. This same focus on context can be seen in the configuration complexity supported within the OVA/OVF format for vApps. One "could" argue that the base vSphere API is a "poor man's" answer to supporting a more utility-focused approach (similar to EC2), but that would be a bit of a stretch.
There are ways to create context from a low level utility API, just as there are ways to force contextualized APIs to behave like they are without context (think about a very large VDC that you don't add any networking complexity to). The basic difference between discrete infrastructure components and composed environments is level of contextualization delegated from the provider to the consumer. To me, context is king for the users in the end, but deciding where that context is applied remains a question that each user needs to answer for themselves.
Have we put enough thought into these distinct approaches to understand the implications fully? Amazon seems to have done the right thing, by providing both styles of consumption. Should other providers follow suit? That depends on the types of customers, ecosystem partners and use cases they want to support.

