Both “could have been” and “might have been” are grammatically correct, but “might have been” is often preferred in historical or archaeological contexts when discussing a possibility based on evidence. “Might have been” suggests a tentative conclusion, aligning well with the uncertainty often present in historical research.
So, the improved sentence would be:
“The ancient city found early might have been home to between 30,000 people.”
Additionally, you may want to adjust “between 30,000 people” to “up to 30,000 people” or “between 20,000 and 30,000 people” for clarity, depending on the intended meaning.