Ok, this is definitely NOT the most elegant solution, but I contrived a crude fix to the problem. Since the false 404 flagging was happening only on user profile pages, I added the following to my single_user.php template just before the header.
$wp_query -> is_404 = false;
get_header(); // Loads the header.php template. ?>
Basically I’m just forcing the profile page to not be 404. I may try to work out a better solution, but for the time being, this appears to work.
EDIT: looks like the code snippet is having trouble displaying a greater than sign, anywhere you see > above, it should be a greater than sign (>).
In my case it was down to the ‘Forum Root’ i had set in the forum settings. I set a ‘Forum Root’ with a preceeding / like this ‘/forum’.
I then ticked the ‘Prefix all forum content with the Forum Root slug (Recommended)’ box.
This resulted in rewrite rules for the user pages like this [/forum/users/([^/]+)/?$] => index.php?bbp_user=$matches
which did not correctly match. I removed the proceeding slash from my ‘Forum Root’ so it looked like this ‘forum’ and then the rewrite rules that were created looked like this: [forum/users/([^/]+)/?$] => index.php?bbp_user=$matches
(no proceeding slash) and it worked.
Maybe the ‘Forum Root’ should have any proceeding slash removed by default to account for this scenario?