Hide header texts (Title & Tagline) in custom-header.php

First of all, When you uncheck Display Site Title and Tagline in the customizer, it doesn’t matter what value you’ve already put in Header Text Color, the customizer saves it as blank (not empty string, the actual text “blank”) after you Save & Publish. You may check this in wp_options table in the database after you Save & Publish or try var_dump() after moving out of the customizer.

Since get_header_textcolor() returns blank and get_theme_support( 'custom-header', 'default-text-color' ) returns 000000, they don’t match in the above mentioned if condition, so the hiding works.

Secondly, you get 000000 with var_dump() for both get_header_textcolor() and get_theme_support( 'custom-header', 'default-text-color' ) when you are in the customizer, because customizer doesn’t reload the page after saving & it uses JavaScript to show / hide Title & Tagline before saving. If you close the customizer after saving, you’ll see that var_dump() will show blank for get_header_textcolor() and 000000 for get_theme_support( 'custom-header', 'default-text-color' ).

This is the line the customizer uses to save the value as blank in the wp-admin/js/customize-controls.js file:

    control.setting.set( to ? last : 'blank' );

Also, in wp-includes/class-wp-customize-manager.php file’s _sanitize_header_textcolor function, you’ll see that WordPress allows blank to be a valid input for header_textcolor along with any valid color value in hex format:

    if ( 'blank' === $color )
        return 'blank';

So your logic was correct, but you got the value wrong.