If you want both logged in and non-logged in user to see the same thing then you only want 'published' post status, at least it doesn't make sense to me to show 'private' posts to non-logged in users. Alter you query to include that condition.
$most_recent_sticky_post = new WP_Query(
array(
'post_status' => array( 'publish' ),
// Only sticky posts
'post__in' => $sticky,
// Treat them as sticky posts
'ignore_sticky_posts' => 1,
// Order by date to get the most recently published sticky post
'orderby' => date,
// Get only the one most recent
'posts_per_page' => 1
)
);
ignore_sticky_posts
, when true
as you have it, treats sticky posts like ordinary posts, which is not what your code comment says but I think that is what you mean.