Для меня это сводится к удобству. Используя XML, я должен проанализировать ответ в DOM (или, как правило, в ElementTree). Используя JSON, один вызов simplejson.loads (json_string) и у меня есть собственная структура данных Python (списки, словари, строки и т. Д.), Которую я могу начать перебирать и обрабатывать. Все, что означает написание нескольких строк кода, как правило, хорошая идея.
Я часто использую JSON для перемещения структур данных между PHP, Python и JavaScript - опять же, потому что это избавляет меня от необходимости выяснять сериализацию XML, а затем анализировать ее на другом конце.
И, как сказал Джинзо, JSON в итоге оказывается немного меньше байтов в проводе.
Вы можете найти запись в моем блоге о JSON пару лет назад полезной: http://simonwillison.net/2006/Dec/20/json/