A single instance can be an out-process cache that leaves on its own JVM typically in the same machine as the application server. This approach has also its benefits and cons. A typical example of an out of process cache can be using an instance of CouchDB for storage of your cache components and your applications talk to the cache via REST.
Still access is fast as it is in the same machine
Easy to setup and configure
Might require a windows or *nix service so the cache engine starts up with the machine
Can leverage its own JVM heap, memory, GC, etc and have more granularities.
Out of process cache servers can be clustered also to provide you with better redundancy. However, once you start clustering them, each of those servers will need a way to replicate and synchronize each other.
Still shares resources in the server
Limited scalability
Needs startup scripts
Needs a client of some sort to be installed in the application server so it can function and a protocol to talk to it: RMI, JMS, SOAP, REST, etc.
Not fault tolerant