Heroku (por exemplo) coloca nginx na frente do verniz provavelmente pelas razões que você mencionou.
Então, nginx - > verniz - > servidores de aplicativos.
No meu trabalho, usamos o Varnish na frente de tudo (verniz - > nginx - > apache / wsgi) e funciona muito bem. O pensamento é que, se houver um acerto de cache, ele será servido do ponto mais alto da pilha. Há algumas peculiaridades embora. A VCL é muito específica para sua tarefa e, como tal, torna um pouco difícil fazer coisas como redirecionamentos (digamos, para detecção de dispositivos móveis) que o nginx poderia manipular facilmente. Em geral, é um pouco menos flexível, já que não é bem o que se pretendia fazer.
Geralmente, pelo que li (e com base na minha experiência no trabalho) é provavelmente melhor colocar o nginx na frente da pilha com o verniz entre ele e os servidores de aplicativos.
A única desvantagem dessa abordagem ao usar o Unicorn é que você não será capaz de usar o método unix socket com nginx e unicorn, pois você terá que pressionar o verniz no meio e o verniz não os suportará. Isso é provavelmente uma coisa secundária.
UPDATE: Por alguns motivos adicionais e mais concretos para escolher um sobre o outro, confira os comentários desta resposta . Depende se você precisa de compactação SSL, ESI e gzip.