How to create an archive for all posts that do not have a post format?

For me I’d used a little different approach:

  1. use an endpoint to create an url like http://example.com/no-formats/
  2. hooking pre_get_posts to set the proper query if needed
  3. filter template_include to force WP to use home.php instead of duplicating it

No more.

add_action('init', 'add_no_format_endpoint');

function add_no_format_endpoint() {
  add_rewrite_endpoint( 'no-formats', EP_ROOT );
}

add_action('pre_get_posts', 'handle_no_format');

function handle_no_format( $q ) {
  if ( $q->is_main_query() && is_home() && isset( $q->query['no-formats'] ) ) {
    unset( $q->query['no-formats'] );
    $q->is_home = FALSE; // <- add this if you have setted a static page as frontpage
    $tax_q =  array(
      'taxonomy' => 'post_format',
      'field' => 'id',
      'operator' => 'NOT IN',
      'terms' => get_terms( 'post_format', array( 'fields' => 'ids' ) )
    );
    $q->set( 'tax_query', array( $tax_q) );
    add_filter( 'template_include', 'force_home_template', 999 );
  }
}

function force_home_template() {
  return locate_template( array( 'home.php', 'index.php' ), FALSE );
}

Remember to visit Settings->Permalinks in you dashboard to flush rewrite rules.