How to hide user profile fields based on the role of the viewed user?

current_user_can() checks the current user’s specified capability. See Roles and Capabilities.

Also, CSS just visually hides the section, but does not remove it from page HTML. The following code checks the capability and completely removes the section.

<?php
// For example, 
// any user other than an Admin of single site installation,
// but not Multisite Admin and not SuperAdmin:
if ( ! current_user_can( 'delete_users' ) ) {

    add_action( 'admin_head', 'my_profile_admin_buffer_start' );
    add_action( 'admin_footer', 'my_profile_admin_buffer_end' );

}

function my_remove_about_section( $buffer ) {

    // get section header and everything until the next section
    $about_section = '~<h2>About Yourself</h2>.+?/table>~s';
    // replace it with empty string
    $buffer = preg_replace( $about_section, '', $buffer, 1 );

    return $buffer;
}

function my_profile_admin_buffer_start() {
    ob_start( 'my_remove_about_section' );
}

function my_profile_admin_buffer_end() {
    ob_end_flush();
}

The whole idea is taken from my old dead pre-WordPress-5 project and is not tested.