If you're running a small site (say, 1,000,000 pageviews per month), you aren't going to have trouble scaling a MySQL/PostgreSQL database and application. You'll normally be showing one pageview per second at that rate. So, it's just as easy to go with Slicehost or Amazon.
It is significantly easier to go with App Engine, though. There's a sizable group of people who don't want to deal with all the messy details of SliceHost or EC2. When you consider that all they really want to do is host a web application and have it scale, requiring them to start with a bare metal VM is total overkill.
I'd disagree. App Engine places huge restrictions on what you can do. With a bare VM, I can install a database, webserver and go to town. With App Engine, I have to deal with all of the small quirks of their data store.
Examples:
You are doing something ___location-based and what to find things within 10 miles of a ___location. With SQL, you can do a crude bounding box query if it doesn't have to be that accurate. You can even do better geometric queries with PostGIS. With App Engine, you can't even do a bounding box query. Inequality queries can only be on one field at a time. Beyond the ___location example, you can't say get me the items where comment_count > 5 and author_karma > 10.
You can't do joins and so you have to denormalize a lot of data that will perform fine as normalized data.
There is no OR operator at all.
Saying that it allows you to ignore the messy details is like saying that you can avoid having to get egg on your fingers making an omelet if you create a machine that can automatically create food. It is not easier to go with App Engine for the majority of applications which would benefit from simple things that App Engine doesn't support.
It is far easier to scale something written for App Engine. That's the payoff. Even if you have to port away from App Engine, you've still created a data storage strategy that doesn't require joins; you've still moved a lot of the data processing out of the database and into Python manually; you've still made it so that you aren't using any advanced queries. App Engine forces you to write applications in a way that scales. App Engine doesn't allow you to do any of the operations that make programming quick to do. It's a trade-off and depending on whether your application needs it, it can be worthwhile or not.
You are talking past each other. neilc pointed out that it is easier to go with App Engine, which is probably true. Your criticisms are that App Engine does not have as many features, which is also true. App Engine isn't aimed at "enterprise" so much as it's aimed at "people who don't want to bother setting up a VPS."
Here's one obvious use case: social apps. Most apps on facebook, myspace, etc don't really require perfectly normalized data, most of the stuff is just for fun, or games to generate ad revenue etc. Plus, you don't have to worry much about the scalability issue other than making your queries run fast, once it's on app engine, a million myspace users hitting your app won't even make you worry.
I've got my own colocation facility with virtual machines and the like as well as an amazon ec2 account with several vms, but I still make use of google app engine any time I want to write a facebook/orkut/myspace app.
It is significantly easier to go with App Engine, though.
For values of easier which include:
1) Learn to program in Python.
2) Forget everything you know about databases.
3) Lose the accumulated value of all reference work on the Internet on, e.g., "How do I send an email to someone 3 days after they sign up for my free trial?"
It is significantly easier to go with App Engine, though. There's a sizable group of people who don't want to deal with all the messy details of SliceHost or EC2. When you consider that all they really want to do is host a web application and have it scale, requiring them to start with a bare metal VM is total overkill.