GCF provides a different experience where you provide just snippets of code and you don't have to even build a full app. Of course, this has pros and cons. The pros are that it's easier to get started, and the service manages things like language runtimes for you. But, the number of languages is usually limited, and you can't customize the OS packages you're including.
In Cloud Run, you provide an entire container. But, this means you're responsible for the contents of the container, which means you have to roll out updates if there there is a security issue for a language.
This was actually the subject of a talk I did last month at ServerlessConf (containers vs. functions), but unfortunately the video hasn't been posted yet. (It'll be posted at https://acloud.guru/series/serverlessconf-nyc-2019.)
From what I understand they serve different needs. One is deployment at the container level and the other is at the functions level. Both use HTTP as the communication layer. Depending on your workload there are good reasons to choose either.
You can currently use Cloud Run for Anthos with no additional charge beyond GKE until May 2020. After that, you'd need an Anthos subscription to continue using the product.
I agree that it's frustrating that you have to contact sales to sign up. We're working to make this self-serve in the future -- Anthos hasn't been available for very long, and we plan to make substantial improvements here.
If I understand correctly, I now must subscribe to Anthos ($$$) in order to run my Cloud Run containers in my own GKE cluster.
Without Anthos, I can only use the fully-managed edition of Cloud Run. Or, presumably, I can set up self-managed Knative in my non-Anthos GKE cluster...
Yes, your understanding is correct, though I can't comment on the price point. Note that there's a free trial of Cloud Run for Anthos available until May 2020.
When would someone pick GCF over Cloud Run at this point?