Насколько целесообразно разбиение на функции и классы?
Это нормально.
Ну то есть про конкретный код нельзя сказать, не видя его, но " выносить каждые пару строк в отдельную функцию" - это нормально. Куда нормальнее, чем писать всю тысячу в одной.

Рекомендую найти видео "Как писать код, который понравится вашим тестам" с первой PHPRussia. Там очень доходчиво рассказывается про то, почему надо делать простые методы. Не только для тестов. А ещё и для повторного использования и для упрощения поддержки кода. Когда надо прочитать основную логику модуля, то даже сокращение в два раза (по одному методу вместо двух строк кода) уже сильно облегчает задачу.
А если уж даже тест понял, что делает ваш код, то человек поймёт и подавно :)

Как вам написали выше - все дело в именах методов. Если они информативные, то есть если конструкция if ($this->function_7($a) && $this->function_8($b)) читается как связный английскй текст, то mission accomplished! Функции выполняют свою роль: легче всего читать код, которого нет. Вместо того, чтобы разбирать, что делает тот или иной код, можно просто прочитать небольшой текст на английском.
Автор этого добра заявляет, что это абсолютно нормальная практика - выносить каждые пару строк в отдельную функцию.
Нормальная ли?
Только ситхи возводят всё в абсолют. Без кода нельзя сказать, норма или нет.
В принципе - если эти функции так хорошо делятся, то почему бы и нет?

1000 строк кода на 3 класса - это не очень много. Это всего 300 строк на класс.
75 функций - это получается в среднем около 10-15 строк на функцию, что в принципе тоже ок.

По вашим словам больше ничего объективно сказать нельзя.