register_sidebar / dynamic_sidebar with sidebar id

Your code works when I test it. I can only assume that the registration code is being hooked into the system too early or too late. register_sidebar() should be hooked on widgets_init per the Codex. Therefore:

function register_header_sidebar_wpse_190618() {
  register_sidebar(
    array(
      'id' => 'header-sidebar',
      'name' => 'Header',
      'before_widget' => '<div class="widget">',
      'after_widget' => '</div>',
      'before_title' => '<h3 class="widget-title">',
      'after_title' => '</h3>',
    )
  );
}
add_action( 'widgets_init', 'register_header_sidebar_wpse_190618' );