To get a more accurate response, I'd list a few use cases here. If you want better control over cache in general (expiration, purge, etc) or have strong gains (use-case specific) of using VCL or ESI its pretty hard to stay clear of using Varnish. Those are at least my caveats when choosing whether to include it or not in my stack.