Ah... a batalha entre JSON e XML. Parece que sempre temos uma competição sobre qual é "melhor" e qual deveríamos usar sempre. Minha opinião é que cada ferramenta possui seus prós e contras, e você vai precisar levar os dois em conta sempre que precisar usar um deles em seus códigos.

Pessoalmente, em meus programas, prefiro usar JSON em 99% dos casos, deixando o xml para quando o problema requer essa abordagem. Mas as duas formas de se fazer o empacotamento de dados são usadas, e pensar que uma delas é melhor que a outra, seria ter uma visão bem limitada sobre o assunto.
Se por um lado JSON oferece uma estrutura inicialmente simples, mas que pode ficar confusa com o tempo, XML oferece uma estrutura mais complexa de ser compreendida (pela quantidade de tags, e namespaces,etc..) mas te entrega uma estrutura que pode ser usada com parsers de xml quase que de forma mágica.

JSON, apesar de ser um objeto de javascript, JSON é compatível com quase todas as linguagens modernas. Ele também é conciso, e simples, com pouco, ou nenhum boilerplate para ser adicionado. Json aceita subníveis dentro dele, seja em formato de objeto, ou array. Em ambos os casos, é preciso tomar cuidado para que você não coloque sub níveis onde não há necessidade, pois isso aumenta, e muito, a dificuldade de compreensão do arquivo. Para desenvolvedores que disponibilizam APIs, ou que usam múltiplas tecnologias, o uso de mensagens em formato JSON pode ser a melhor forma de fazer a integração (pelo menos até o momento).

Com XML, a estrutura que temos nos permite ir além de objetos, arrays, strings. XML permite o uso de namespaces, atributos, e o uso de schemas para fazer a validação e compartilhar como o modelo xml deve ser formado. Porém, nem todas as linguagens conseguem fazer o parse de xml, e o schema pode acabar atrapalhando ao invés de ajudar.

para mim (e talvez apenas para mim), o uso de JSON permite o uso simples de mensagens, sem o overhead que existe no xml. Se sua aplicação precisa de uma estrutura mais rígida e com mais recursos, que o json não suporta, eu recomendaria usar XML.