bbPress shouldn't because we don't have that tight knit support for it right now, it's still pending in my todo list for the plugin.
Our plugin has 2 places that it'll send out an email, in the version you have. First is the admin email, second is the user and if they got accepted/denied.
user email only runs within the admin and the admin_init hook, and doesn't use the template you mention, so we know it's the other one.
I'm curious if something is triggering the bp_core_activate_account hook, and it's getting past our if statements before resulting in an empty user. At this point below, there's nothing to query and fetch for.
//email admin about new member request
$user = get_userdata( $user_id );
$user_name = $user->user_login;
$user_email = $user->user_email;
$mod_email = $user_name . ' ( ' . $user_email . ' ) ' . __( 'would like to become a member of your website, to accept or reject their request please go to ', 'bp-registration-options') . admin_url( '/admin.php?page=bp_registration_options_member_requests' );
$admin_email = get_bloginfo( 'admin_email' );
wp_mail( $admin_email, __( 'New Member Request', 'bp-registration-options' ), $mod_email );
It's almost like one of the other plugins you have is deleting the user before our plugin can finish.
That said, if you're willing to let it run for a bit this way, see how the emails turn out with WangGuard turned off. I don't believe it's Better WP Security in this case. Just let it go for half a day or so and see if BP Registration Option emails start coming in with actual user info.