Special 404 header page

Further to my comment:

I ran across a very similar issue with get_sidebar(), which I expected (incorrectly) to work the same as get_template_part(). A work-around is to do something like this:

// instead of using get_header( '404' ); , do this:
get_template_part( 'header', '404' );
// which should select 'header-404.php', or, if it doesn't
// exist, fail over to 'header.php'

References