Custom WordPress theme not displaying posts from category

I thought WordPress was supposed to do all the heavy lifting as far
as filtering by categories, tags, authors, etc.

It does. Which is why you shouldn’t have done this:

  $category = get_category( get_query_var( 'cat' ) );
  $cat_id = $category->cat_ID;
  $loop = new WP_Query( array( 'cat' => $cat_id ) );

In the main template files you shouldn’t be doing your own queries. Use the main loop:

<?php if ( have_posts() ) : ?>
      <?php while ( have_posts() ) : the_post(); ?>
            <!-- etc. -->
      <?php endwhile; ?>
<?Php endif; ?>

The purpose if archive.php is to allow you to have a different template for archives. Not to manually query different posts. The only difference should be the HTML markup around the content.