Uma boa parte dos navegadores possuem um processador nativo (menos o Internet Explorer) que transformam uma marcação XML em um objeto DOM.
Em XML caracteres como &, “” , ‘ e < (quando for utilizado para outra finalidade que não seja abertura de tag) devem ser codificados para & " ' e < respectivamente.
Scripts JavaScript podem conter caracteres ilegais, segundo a sintaxe XML. Se tais scripts forem inseridos diretamente no documento, serão processados e gerarão erro XML. Veja o exemplo:
<script type="text/javascript"> if (a<8) { alert("a é menor que 8"); } </script>
A presença do sinal “<” causa um erro XML. Se o documento for servido com DOCTYPE XML simplesmente ele não funcionará. Se for servido como DOCTYPE XHTML ele não será validado.
O uso das seções CDATA em JavaScript resolvem o problema tornando o código invisível para o parser XML e portanto válido. Veja o exemplo:
<script type="text/javascript"> //<![CDATA[ if (a < 8) { alert("a é menor que 8"); } //]]> </script>
Se o documento usar um DOCTYPE para HTML não é necessário o uso de seções CDATA pelo fato de HTML não seguir a sintaxe XML.
fonte: Livro JavaScript Guia do Programador (Novatec).