Да, это звучит немного вводящим в заблуждение.
На самом деле они говорят 2 вещи:
1) Мы делаем заголовок высотой объекта, который вы вернули для tableView: viewForHeaderInSection:
2) Мы делаем высоту заголовка, которую вы вернули в методе tableView: heightForHeaderInSection:.
Это два совершенно разных.
Но правильный вывод таков:
1) Вы должны реализовать heightForHeaderInSection.
2) Ваша высота для каждого раздела будет корректироваться для возвращаемого объекта, если он не соответствует размеру, который вы определили в heightForHeaderInSection: