Thank you for reading and for your long answer.
In a word, it's an opinionated article, and you have right on many points.
However, if you use the command `gcloud run deploy source=.` you follow the EXACT SAME best practices in term of container best pracitices, security and so on. Without writing a Dockerfile, without installing docker on your computer!
Why?
Because the container is built from your source by using BuildPacks and then deplyed
What's BuildPacks?
It's a tool, built by Google Cloud to create container for AppEngine and Cloud Functions, based on your code. Now it's a CNCF product.
So, if you use BuildPacks for Cloud Functions and for Cloud Run, the container best practices are exactly the same. the difference that you are ready to jump to the next level (if you need customization and other cool conainer feature) without changing your infrastructure.
Anyway, you have right on the confusion on Cloud Functions 2nd gen and Cloud Run. I told that was not acceptable to the Cloud Functions PM during the Alpha tests, but the team choosed to released publicly the product with that entangled feature. So bad :(