I see. I actually managed to find out how to circumvent this.
esearch (and I suppose all its siblings) make a distinction between tsa-master and tsa master and wgs-master and wgs master with double quotes. Adding the hyphen resolves the discrepancy.
No hyphenation -> incorrect count:
> esearch -db nuccore -query "((txid7604[Organism:exp]) AND ("tsa master"[Properties] OR "wgs master"[Properties]))"
<ENTREZ_DIRECT>
<Db>nuccore</Db>
<WebEnv>MCID_638e1ebf93dc63259250e57f</WebEnv>
<QueryKey>1</QueryKey>
<Count>81468</Count>
<Step>1</Step>
</ENTREZ_DIRECT>
With hyphenation, correct result:
> esearch -db nuccore -query "((txid7604[Organism:exp]) AND ("tsa-master"[Properties] OR "wgs-master"[Properties]))"
<ENTREZ_DIRECT>
<Db>nuccore</Db>
<WebEnv>MCID_638e1ec7b18a76276123d0dc</WebEnv>
<QueryKey>1</QueryKey>
<Count>4</Count>
<Step>1</Step>
</ENTREZ_DIRECT>
