Yes, it‘s exactly that: If you call any Kirby object like
site() before the config is fully loaded (meaning: directly from config, not from a callback, which is fine as they are executed later), this issue appears.
Put as I pointed out in the GitHub issue that was linked to by Sonja above, this is a „won’t fix“ as there is no way to get this right. As you said, the multilang stuff can only be initialized after the config is fully loaded, so we don‘t support any direct access to the Kirby objects before that.
But as you already found out, callbacks are fully supported and therefore the way to go.