I would get the count of a variable number of repeated titles by using an indexed array.
$theposts = get_posts( array(
'post_type' => 'post_subscriber',
'post_status' => 'publish',
'numberposts' => -1,
) );
// project titles counter, outside the loop
$project_titles = array();
foreach( $theposts as $p ):
$project_name = get_post_meta($p->ID, 'project', true);
echo '<ol>';
echo '<li class="mb-3">';
$project_title = get_the_title($project_name);
echo $project_title;
// check if $project_titles contains $project_title already
if ( array_key_exists( $project_title, $project_titles) ) :
$project_titles[$project_title]++;
else : // otherwise, initialize key value pair with 1
$project_titles[$project_title] = 1;
endif;
echo '</li>';
echo '</ol>';
endforeach;
// loop through and print all
foreach ($project_titles as $project_title => $project_title_count) :
if ($project_title_count > 1) : // repeated
echo 'There are ' . $project_title_count . ' projects with the name ' . $project_title . '.<br/>';
endif;
endforeach;
$project_titles
will now store the number of times each title is repeated as a key-value pair. The key will be your project’s title, and the value will be the number of times that project’s title exists.
EDIT: Removed first code block since it wasn’t useful with question update. Updated second block of code to accommodate a variable number of repeated titles.