How to hide WooCommerce product title and short description to non logged in users?

Your $description is shown because you concatenated it is your condition in

$description = '

' . sprintf( __( "To check if this item qualifies for a discount %s an account."), '' . __("Log In or Create") . '' ) . '
' . $description; 

Does the below code helps ?

add_filter( 'woocommerce_short_description', 'add_text_before_short_description_for_guests' );
function add_text_before_short_description_for_guests( $description ) {
    // Only for guest users
    if ( ! is_user_logged_in() ) {
        $description = sprintf( __( "To check if this item qualifies for a discount %s an account.", 'your_textdomain' ), '' . __( "Log In or Create", 'your_textdomain' )  );
    }

    return $description;
}

Do not forget to add your own or your theme (I don’t know) text-domain to translate your work easily.