Minha opinião sobre isso é que a documentação deixa razoavelmente claro que a intenção é que o CASE entre em curto-circuito. Como Aaron menciona, houve vários casos (ha!) Em que isso demonstrou que nem sempre é verdade.
Até o momento, tudo isso foi reconhecido como bugs e corrigido - embora não necessariamente em uma versão do SQL Server que você possa comprar e consertar hoje (o bug de dobragem constante ainda não chegou ao AFAIK de atualização cumulativa). O novo bug em potencial - relatado originalmente por Itzik Ben-Gan - ainda não foi investigado (Aaron ou eu o adicionaremos ao Connect em breve).
Relacionadas à pergunta original, há outros problemas com CASE (e, portanto, COALESCE), em que funções ou subconsultas de efeito colateral são usadas. Considerar:
SELECT COALESCE((SELECT CASE WHEN RAND() <= 0.5 THEN 999 END), 999);
SELECT ISNULL((SELECT CASE WHEN RAND() <= 0.5 THEN 999 END), 999);
O formulário COALESCE geralmente retorna NULL, mais detalhes em https://connect.microsoft.com/SQLServer/feedback/details/546437/coalesce-subquery-1-may-return-null
Os problemas demonstrados com transformador otimizador e rastreamento de expressão comum significam que é impossível garantir que o CASE entre em curto-circuito em todas as circunstâncias. Posso conceber casos em que talvez nem seja possível prever o comportamento inspecionando a saída do plano de exibição pública, embora eu não tenha uma reprovação para isso hoje.
Em resumo, acho que você pode estar razoavelmente confiante de que o CASE entrará em curto-circuito em geral (principalmente se uma pessoa razoavelmente qualificada inspecionar o plano de execução e esse plano de execução for 'aplicado' com um guia ou dicas), mas se você precisar uma garantia absoluta, você deve escrever SQL que não inclua a expressão.
Não é uma situação extremamente satisfatória, eu acho.
CASE
sempre avalia os circuitos da esquerda para a direita e sempre os curtos )