Cloud Deployment Manager could help in the future, but the examples are Compute Engine focused, so I'm skeptical it's ready to use with GAE. I think Option 1 may work well initially, but I don't think it will be viable in the long-term because supporting and upgrading more instances will only get harder and harder.
In my case, non-commercial use is not likely, so as of now I'm leaning towards the second row of your table, where all customers are hosted in my application. I found out that customers can still run the app within their domain as described
here.
I'm know roughly how many datastore operations my server code needs for various operations, so I think I can do a poor man's estimate of what the hosting costs are and refine it as needed. To keep things simple, I'd like to just charge one monthly support fee and have hosting be included in this, but I think it's going to take some trial and error to figure out if that will work or not.
When you're small you need to tame complexity, and so far Option 2 seems the best to me. It would be great for developers if Google provided tools to bill app customers for resources used and support provided so we didn't have to do that, but they don't seem to, so we have to find another way. Maybe there is a third party that billing can be outsourced to.