It seems like extensions which are listed in the extension directory but not available for in-app distribution are not included in update checks. They also don't appear in the sites/default/files/civicrm/upload/cache/extensions.json file which seems to be the list of available updates it retrieves. I've run the version update job and "refresh" button on the extensions page manually and can see it downloads a new one.
So for example on the status page it says all extensions are up to date but I know they are not.
Is this a local config issue or is this just how it works?