A very TLDR answer...
To reduce clutter without losing features you first have to realize that clutter is defined by the user.
I recently set up a forum for a
VERY senior church group and spent hours building out the themes and tweaking everything to perfection (IMO) only to find they were overwhelmed by it all. In the end they truly preferred XF "out of the box" layout/colors w/nothing else (shout boxes, resources, separate group nodes, etc.). Think 'senior church group' vs. 'gaming community.' Some see features as cool additions. Others as obstacles that hinder convenient use.
Nav mgr and drop downs
Keep top level nav strictly for essentials. Move secondary features into sub-nav. Features are accessible but aren't screaming for attention.
Be aggressive w/sidebar management
Widgets are great but you don't need all of them on every page. Use widget display conditions to show only what is relevant to the specific page the member is viewing.
User group permissions and prefs
Set it up clean by default but allow specific groups to toggle on optional sidebar elements via account prefs.
Most important IMO: consistent styling
You don't have to assassinate your features, just give them room to breathe w/consistent padding and white space in style properties.
Ultimately a great UX isn't about fewer features. It's organizing them so they don't get in the way of the conversation -- and all of us that run forums know we're already on the edge of the abyss. If there's no conversation our forums we love are doomed to go the way of the dodo. Sometimes our "perfect" design is the very thing gettin' in the way.
An easter egg for anyone that needs it:
Follow: Appearance > widgets. Select a widget and look for the display condition box at the bottom.
- To hide a widget on mobile (highly recommended for sidebars): !$xf.reply.isMobile
- To show a widget ONLY on the main forum list: $xf.reply.template == 'forum_list'
- To show a widget ONLY to guests (great for "Join Us" buttons): !$xf.visitor.user_id
- To show a widget ONLY to logged-in members: $xf.visitor.user_id
- To hide a widget from a specific user group (eg Senior church group): !$xf.visitor.isMemberOf(4)