В первом случае в $dataPosts получается массив моделей постов, следовательно $dataPosts->comments и не должен возвращать что-то, потому что надо сначала получить конкретную модель поста и уже из неё дергать комментарии. Что, собственно, и делается в третьем варианте. Почитайте внимательнее в чем различие возвращаемого результата у findAll() и findByPk()