As respostas aqui não estão totalmente corretas. Perto, mas há um caso extremo.
A diferença é que $ ('body') na verdade seleciona o elemento pelo nome da tag, enquanto document.body faz referência ao objeto direto no documento.
Isso significa que se você (ou um script invasor) sobrescrever o elemento document.body (vergonha!) $ ('Body') ainda funcionará, mas $ (document.body) não. Portanto, por definição, eles não são equivalentes.
Eu me arrisco a adivinhar que há outros casos extremos (como elementos globalmente identificados no IE) que também acionariam o que equivale a um elemento de corpo sobrescrito no objeto de documento, e a mesma situação se aplicaria.