why does add_rewrite_rule refresh and loose url variables

First of all, always develop with debugging enabled so you can see errors. This will reveal the first issue: Undefined variable: matches. Your rule should be in single quotes so it’s passed as a string and the $matches variable is not expanded.

The second issue is that there is no category query var, if you’re trying to set a default WordPress category, it should be category_name.

This is tested and working in TwentyTwelve theme:

add_action( 'init', 'add_author_rules' );  
function add_author_rules() {   
    add_rewrite_rule(  
        'support/([^/]+)/?', 'index.php?category_name=$matches[1]', 'top'
    );   
}

Note that you will not see any change to .htaccess as this is an internal rewrite.

If category is your own custom query var, you need to register query vars with WordPress so it is aware of them, though I would not suggest using just category.

add_filter( 'query_vars', 'wpa_query_vars' );
function wpa_query_vars($query_vars){
    $query_vars[] = 'wpa_category';
    return $query_vars;
}