Why did word final S get replaced by "CE" in Middle and Modern English?

There are many words in English that have ce at the end in Modern English. The roots they have come from had s but replaced by ce in Modern English. Is there any reason why the s's got replaced by ce? Why did this happen?

Look at the following examples to see what I mean:

"race":

From Middle English race, from Old Norse rás

"ice":

From Middle English is, from Old English īs

"rice":

From Middle English rys, from Old French ris, from Old Italian riso, risi

"peace":

From Middle English pes, pais, pees, borrowed from Anglo-Norman peis and Old French pais

"ace":

From Middle English as, from Old French as, from Latin as, assis

"pace":

Borrowed into Middle English from Anglo-Norman pas, Old French pas, and their source, Latin passus. Doublet of pas; cf. also pass. Cognate with Spanish pasear

"juice":

From Middle English jus, juis, from Old French jus, jous, from Latin jūs


TLDR: the s was replaced by -ce to avoid confusion the /z/ sound represented by the letter s in Old English.

That change seems to be sporadic. As you can see, the majority of the words in the OP are of French/Norman origin. You may have noticed that the letter ᴄ in Modern English is usually pronounced /s/ before ɪ, ʏ and ᴇ; it was a spelling convention introduced by French scribes.

According The History of English Spelling by Chrisopher Upward, by the time of the Norman Invasion, French c was pronounced /s/ before ɪ, ʏ, ᴇ in words of both French origin and Old English (OE), for example:

  • Middle English (ME) cite < Old French cité
  • Middle English mice < OE mȳs

Upward says that word-final s was often replaced by -ᴄᴇ in ME and Early ModE period as in: ace < French as, juice < jus, palace < palais, though he doesn't explain why.

For the why, I consulted A Modern English Grammar on Historical Principles: Volume 1, Sounds and Spellings by Otto Jespersen. According to Jespersen, Old French ᴄ was originally pronounced /ts/ but then it simplified to /s/. What he says about OE se suggests that it had the value /z/ in OE. He says:

But to avoid mistakes with -se = /z/ English has introduced -ce into a great many words which in ME were spelt with -s [...] [emphasis mine]

The spelling -ce was even applied to native words in order to denote the voiceless sound unambiguously after final -s had become voiced [...]

(pp 49-50)

The last two lines account for the words of OE origin that are spelt with -ᴄᴇ: īs ‘ice’, mȳs ‘mice’, lȳs ‘lice’, flēos ‘fleece’