It feels odd answering my own question (should this be a new question?), but after reading this question I found the following code snippet that changed the behavior:
//action hook for plugins and extra fields saving
do_action('edit_user_profile_update', $current_user->ID);
wp_redirect( get_permalink() );
exit();
I added this after my call to wp_update_user()
and is_user_logged_in no longer returns false. Why is this?