I don't think you can paginate eager loaded constraints like this.
I speak about something similar here: https://www.laracasts.com/discuss/channels/laravel/how-to-use-paginate-when-filter-is-used
There may be a better way, but this would give you the result you're after. It may not be the most efficient or prettiest, but you should be able to use this to map over posts and convert them to the LengthAwarePaginator class.
Something like:
$forumsWithPaginatedPosts = $forums->map(function($forum) {
return $forum->threads->map(function ($thread) {
$thread->paginatedPosts = $this->paginate($thread->posts, 10);
return $thread;
});
});
Taking your blade code, you could then access your paginated posts via
foreach ($forums as $forum) {
dd($forum->threads->first()->paginatedPosts);
}