> The former is a better fit for your entire app stack (think Heroku) while the latter is for ad-hoc.
There's no product reason why App Engine couldn't start deploying custom containers.
> As for Cloud Functions and Cloud Run, the way you deploy is completely different. Cloud Run is strictly meant for containers.
AWS Lambda (arguably the "inspiration" for Cloud Functions) just announced support for custom containers. Cloud Functions could too. And then you essentially have Cloud Run.