These lists for the where clauses are due to the fact that the portlets are aggregating content from all the news instances for all groups the user belongs to, etc. I haven't dug into these queries or the surrounding portlet code to see if things can be organized in a better way.
At the very least we could use db_map to replace these "in" clauses with "= :forum_id" in the case where the portlet is being used to show a single forum's contents, which will often be the case within a single class (i.e. one without subgroups with subgroup forums.)