I run Memcached on every server and usually give each 1 GB of storage giving me a pretty good sized in-memory cache.
It doesn't make sense for a single server where you can just cache to disk with less overhead.
It works well for transient data since you can let it handle aging out old data.
After using it for awhile, I changed my in-memory cache object to support some of the same semantics for max time-to-live.
So if I want a shared cache between system or a longer shelf-life I used Memcached, but there are a lot of more purposed data sets that get cached in the application server memory instead.
It is nice to have options on how/where you cache your data.