Custom Taxonomy Archive BUG

as mentioned by @mmm you loop over the terms and in each term you loop over each project – however I think this is what you wanted to do:

$terms = get_terms( array(
    'taxonomy'   => 'residential_project_types',
    'orderby'    => 'count',
    'hide_empty' => true
) );

foreach( $terms as $term ) :
?>
    <a class="property-thumb-link"
       href="https://wordpress.stackexchange.com/questions/264897/<?php echo get_term_link( $term ); ?>">
        <div class="property-thumb column medium-6 small-12">

            <img src="<?php the_field('category_image', $term); ?>"
                 alt="<?php the_field ('category_image_alt', $term); ?>" />

            <div class="property-thumb-title">
                <h2>
                    <?php echo $term->name; ?>
                </h2>
            </div>
        </div>
    </a>
<?php
endforeach;