One issue I have with VPC is that instances don't get public IPs by default like public cloud instances do. Instead you have to attach EIPs, which has extra complexity (esp. taking care to deallocate them if you don't care about persistence), and you're limited to only 5 EIPs by default. I know you can request to increase the limit, but I have no idea what the approval process is like, and it seems completely silly when you can get as many public IPs as you want by launching multiple public cloud instances.
(If you're curious, my architecture requires hosts outside of AWS to connect directly to EC2 instances. Using a NAT box inside VPC would likely introduce a bottleneck. I don't need multiple IPs per instance, but I just wanted to provide some feedback as to why VPC with an Internet Gateway feels inferior to public cloud EC2 for me. Thanks!)