When you have only a single remote (let’s call it origin) then when you type
git checkout foo
when foo doesn’t exist but origin/foo does exist git will behave as though you typed the following
git checkout -b foo origin/foo
If you have multiple remotes, and foo does not exist locally but exists in 2 or more remotes then this behavior is suppressed.
You will need to explicitly create foo and instruct git what remote/branch you want it to track.
git checkout -b foo <remote>/foo