Магии быть не может. И curl и file_get_contents возвращают вам весь контент, который отдает сервис.
Возможно разница в ответах исходит из-за разницы запроса. Например когда вы заходите через браузер дополнительно передаются cookies, которые могут изменять ответ сервиса.
Если не хотите тут светить сервис, то попробуйте воспользоваться плагинами к браузеру например тот же firebug для firefox и посмотрите точно, что именно отсылается на сервис. Потом попробуйте скопировать всю эту информацию и передать ее средствами curl или file_get_contents
Возможно так же есть двойная авторизация, одна средствами веб сервиса (стандартная http, появляется диалог с вводом логина и пароля) вторая уже более расширенная с использованием серверного языка. Если вы хотя бы единожды авторизировались в браузере, то все остальные запросы он автоматом передает нужные данные и уже к примеру доходит до второй авторизации, которая и возвращает json. А вы используя curl и file_get_contents возможно не проходите и первой авторизации, поэтому вам вообще ничего не возвращается.
В любом случае все это вы сможете увидить в firebug. Вам нужно разобраться, что именно передает ваш браузер на сервер и потом сделать тоже самое в коде. Тогда мистика исчезнет.