I presume you are referring to this part of the documentation?
# Note that any globally configured "external_labels" are unaffected by this
# setting. In communication with external systems, they are always applied only
# when a time series does not have a given label yet and are ignored otherwise.
The first part explicitly says that honor_labels (i.e. the scrape job setting) has no effect on external labels. honor_labels applies to a scrape job and only affects scraping, not reading.
On the other hand, the second part does say that external labels are only applied when the label does not already exist. Is that the issue you're raising?
If so, perhaps you can describe things like the versions of prometheus and thanos you're using. I think it would also be worth trying to query the federate endpoint, to see whether external labels behave the way you expect there (i.e. is this specifically a problem with thanos?)