Почему не верно работает COUNT?
У меня другой вопрос, какого чёрта вы лепите такое гавно.
self::selectRaw, есть стово static, которое не ломает наследование, а главное и его не нужно использовать, ибо в Laravel статик гоняется через фасады и вы работает с полноценными объектами, нужно использовать $this.
В Eloquent есть нормальный ORM, который для этого запроса шустреньоко всё насчитает и прозрачно подтянет связи, а ваш код будет сложно поддерживаемым. Уважайте своих коллег, а то сами заблудились в 3-х соснах.
Поставьте себе отладчик или просто выведите получившийся запрос laravel.com/docs/5.0/database#query-logging чтобы понять, что в итоге получилось и что оно возвращает.
Так может произойти, если элементу таблицы posts соответствует два элемента таблицы post_cat. Попробуйте использовать COUNT(DISTINCT comments.id).