Using meta_query in add_query_arg

It seems the normal and expected behaviour to me. meta_query is not a registered query var. You can see a list of registered query vars, and their relationship with WP_Query in this codex entre. Any other query var you want to use needs to be registered and handled by you.

A very quick and general example:

// Add custom query var
add_filter( 'query_vars', 'cyb_add_query_vars' );
function cyb_add_query_vars( $vars ) {
  $vars[] = 'my_meta_query';
  return $vars;
}

// Manipulate query
add_action( 'pre_get_posts', 'cyb_pre_get_posts' );
function cyb_pre_get_posts( $query ) {

    // Only main query?
    // if( $query->is_main_query() ) ...
    // Only admin?
    // if( is_admin() ) ....
    // Or whatever, you can manipulate $query as you wish

    if( ! empty( get_query_var( 'my_meta_query' ) ) ) {
        $query->set( 'meta_query', get_query_var( 'my_meta_query' ) );
    }

}