Yanlış anlamadıysam <meta name=keywords... iki defa çıkıyormuş. Bunun için kodun şu bölümünün iki defa işlemiş olması lazım.
            $meta_tag = "\r\n" . '<meta name="keywords" content="'. $baslik .'" />' . "\r\n";
Bu da ancak bir döngü ile oluşabilir diye düşündüm. Döngünün dışına çıkabilmek içinse böyle birşey yazmak lazım.
if ($sayi==1){break;}else{$sayi++;}
Verdiğiniz kodda döngü göremedim ama şöyle bir dener misiniz?
	// at showthread.php, add dynamic description from first post
	if ($mybb->settings['cur_file'] == 'showthread.php' && MAX_DESCRIPTION_LEN > 0)
	{
		// get first post
		$query = $db->query("SELECT subject FROM ".TABLE_PREFIX."posts WHERE tid = '{$mybb->input[tid]}' ORDER BY pid ASC LIMIT 1");
		$row = $db->fetch_array($query);
		if ($row['subject'] != "") {
if ($sayi==1){break;}else{$sayi++;}
			$baslik = seo_clean_baslik($row['subject']);
			$meta_tag = "\r\n" . '<meta name="keywords" content="'. $baslik .'" />' . "\r\n";
			$page = preg_replace('#<meta(.+?) />#', "\\0{$meta_tag}", $page);
		}
	}