I don't think this is that complicated. Closed means noone can post to the forum. This could happen if a discussion has ended, but you want to retain the historical record of the forum for people to read. There is a seperate disabled feature to hide the forum. You can't join a forum or change who can see which forum within a forums package instance (without manually fooling with the permission) if they have read access to the foums instance.
So I think the solution is to change "Closed" to a more clear description.
The query to list the forums seems to say that any forum the user can read should be displayed in the list of forums
forums_forums_enabled.posting_policy = 'open'
or forums_forums_enabled.posting_policy = 'moderated'
or 't' = acs_permission__permission_p(forums_forums_enabled.forum_id, :user_id,'forum_read')