Being able to differentiate behavior of coin A to another coin B ("coin" being a unit of any so-called programmable currency such as bitcoin, but this proposition is not bitcoin-specific), in a persistent way, means coins A and B have different utility, are no longer functionally interchangeable, and therefore are worth different things to different users. This breaks fungibility.
Alternatively, if programming is not persistent across transactions, it has no memory (apart from the most rudimentary unique identity, such as a serial number) and thus is not "programmable" but "able to be tracked by something else". This makes the coin no different than any current electronic payment system where external, programmable scaffolding (in the form of off-ledger memory and logic) is used to track, route, and generally superimpose conditional behavior onto the currency.
Are fungible currency and programmable currency mutually exclusive concepts?
If I understand you correctly, could the exact same thing not be said about different fiat currencies?
I can't spend USD or AUD here in Europe, I would need to exchange them first. That doesn't make those currencies non-fungible, rather limited to a certain setting. In a world where lots of cryptocurrencies are accepted, they would all be fungible, but would require exchanges to allow them to be useful in all situations.
I personally don't think we will see that situation arise, during the alt coin boom people were releasing milkcoin to buy milk, and sugarcoin to buy sugar, I don't see that as a reasonable future for Crypto, I think there will be one major crypto, or they will be geographically split as now with fiat.