Why is my category template ignoring post type?

Your issue is definitely caused by the lack of a pre_get_posts filter. Try this in your theme/functions.php:

// so event cpt is found on assigned cat archive page
function jdk540_event_query_post_type($query) {

    if ( ! is_admin() ) {

        if( is_category() || is_tag() &&  $query->is_main_query() && empty( $query->query_vars['suppress_filters'] ) ) {

            $post_type = get_query_var('post_type');

            if($post_type)
                $post_type = $post_type;
            else
                $post_type = array( 'post', 'event', 'nav_menu_item');

            $query->set('post_type', $post_type);
        }

    }

}
add_action('pre_get_posts', 'jdk540_event_query_post_type');