Что я делаю не так с file_get_contents?
Вероятно на странице два блока пагинации, которые соответствуют указанному регулярному выражению.

По умолчанию в preg_match_all передается флаг PREG_PATTERN_ORDER

PREG_PATTERN_ORDER
Упорядочивает результаты так, что элемент $matches[0] содержит массив полных вхождений шаблона, элемент $matches[1] содержит массив вхождений первой подмаски и т.д.
Поэтому в $pages[0] указаны все вхождения шаблона, а в $pages[1] - вхождения первой подмаски (номер страницы в вашем случае).
0 массив он всегда есть там вся найденная строка 
1 то что тебе нужно