With money, privacy implies fungibility. If all transactions that take place using a particular currency is public, then people will know whether some money that someone is sending them was part of an illegal transaction in the past. This means that they can choose to not accept the money because of its link to illegal activities. This violates fungibility as not all units of the currency are treated the same way. Thus one unit of the currency cannot be replaced by another unit and necessarily have the same value.
If everything were private, then it is impossible to know whether some money was involved in illegal currencies. In this case, the vendor would have to choose to either not accept the currency entirely, or always accept the currency. They cannot pick and choose which particular units they accept. This makes it fungible as all units of the currency must be treated identically. Thus one unit of the currency can be replaced with another unit and still have the same value.
For currencies like Bitcoin, all transaction history is public. Thus Bitcoin is less fungible than zcash or monero where some or all transactions are private. We have seen this before with Bitcoin: some people will pay a premium in order to get newly generated coins which are provably clean. In other cases, some vendors have refused to honor deposits of coins that have come from large thefts. More private currencies such as zcash or monero do not have these problems as their private transactions hide history so vendors do not know whether the coins they receive are clean or dirty.
Note that while zcash and monero may be more fungible, they still have their own issues; there's a tradeoff. Furthermore, zcash isn't really more fungible than Bitcoin as no one actually uses their stealth addresses. So most transactions are public, and the ones that are hidden using stealth addresses are very obvious and special (i.e. probably up to no good) since it is not commonly used.