Это происходит потому, что вы заменяете файл на файл, а его предыдущее изменение постоянно изменяется на:
soal = Regex.Replace(question.Pertanyaan.ToString(), "\"https://tryout.pendidikan.id/upload/" + file.Name + "\"", "data:image/jpeg;base64," + base64ImageRepresentation);
Подход может состоять в том, чтобы сохранить замененную строку регулярного выражения в переменную. При этом ваши замены не будут перезаписаны:
string soal = question.Pertanyaan.ToString();
foreach (StorageFile file in files)
{
string soalP = file.Path;
if (soal.Contains("https://tryout.pendidikan.id/upload/"))
{
byte[] imageArray = System.IO.File.ReadAllBytes(soalP);
string base64ImageRepresentation = Convert.ToBase64String(imageArray);
soal = Regex.Replace(soal, "\"https://tryout.pendidikan.id/upload/" + file.Name + "\"", "data:image/jpeg;base64," + base64ImageRepresentation);
}
}