
1. GAE's power vs GAE's limitation
With great power comes great responsibility. With cool features come some restrictions. It's a trade-off, ying and yang. I'm a Java programmer so I care mainly about the Java version of GAE. In GAE, not all Java features is available. Things like creating thread and writing to file system are not allowed in GAE. GAE also doesn't have persistent running process and every task should be finished in 30 seconds or less. Despite that, you might still want the GAE power. Why not using both?
2. Scalability is not entirely necessary, but still needed in some part
As I mentioned in the first paragraph. Scalability is one of GAE virtue. We can have a part of our application which requires high scalability to be deployed on GAE. Another part of the application that could not be necessarily scalable may reside on the other server. I could imagine this setting where GAE serves as an interface to outside the system and/or as a storage while the other server responsible to do things that GAE specifically couldn't do due to its restrictions.
3. It will be pure GAE in the future
For one or more reason, we can't have a pure GAE solution. It might be because the application is migrated from other technology and require some more time to be ported, or that the current GAE is not yet capable, but will be in the future (see GAE road map). It might be a good decision to start doing things in GAE if we believe that the future is on GAE, thus investing some resources now instead of doing it later (which will cost more without a doubt).
What do you think?