Count identical post titles

I’m assuming your original code has a closing } at the end, like this:

<?php
    global $post;
    $postslist = get_posts( array( 'post_type' => 'reviews', 'posts_per_page' => 20, 'order'=> 'ASC', 'orderby' => 'date' ) );
    foreach ( $postslist as $post ){
        setup_postdata($post);

        // Tag counter 
        $post_tags = get_the_tags($post->ID);
        if ($post_tags) {       
            foreach($post_tags as $tag){
                echo '<span class="review-count">' . $tag->count . ' review(s)'  . '</span>';
            }
        }
    }
?>

You’ll want to set up an array to hold all the post titles before your foreach loop so it persists.

<?php
    global $post;
    $postslist = get_posts( array( 'post_type' => 'reviews', 'posts_per_page' => 20, 'order'=> 'ASC', 'orderby' => 'date' ) );
    // Set up an empty array
    $review_titles = array();
    foreach ( $postslist as $post ) {
        setup_postdata($post);

        // Use the title rather than tags
        $review_title = $post->post_title;
        // See if this title already exists in the array
        foreach($review_titles as $key => $val) {
            // If the title matches, add to its count
            if($val['title'] == $review_title) {
                $count = $val['count'] + 1;
                $review_titles[$key]['count'] = $count;
                // Stop looping since we already found a match
                break;
            }
            // The title doesn't match, so add it to the array with count 1
            else {
                $review_titles[] = array('title' => "$review_title", 'count' => 1);
            }
        }
    }
?>