Many French words have lost etymological /l/. I have read that this occured due to a process of l-vocalization around the 10th-12th centuries which turned pre-consonantal l to u after any vowel aside from i (Manz). It seems that in general, el developed to the triphthong eau (which in Modern French has become /o/) as in beau < bellus, chateau < castellum, couteau < cultellus, veau < vitellus. The use of -eau instead of -el in the singular of words like this is said to be a back-formation from plural forms ending in -eaus/-eaux (Manz, Ricard).
However, in some cases, el apparently became the diphthong eu (Modern French /ø/).
It looks to me like eu might have been conditioned by a preceding glide /j/:
However, it's also present in the word cheveu(x) "hair(s)," from Latin capillus. At first, I wondered if it might relate to the etymological vowel quality, since from what I understand Latin /i/ corresponds to Proto-Romance /e/, which was distinguished from /ɛ/ in stressed syllables. But the word sceau is from Latin sigillum, and it still has eau, so I'm not sure if that's relevant.
I'd appreciate any explanation of how cheveu(x) developed phonetically. Perhaps the use of eu instead of eau here just reflects earlier or dialectal variation that was mostly leveled out in standard French, but that in itself would be an interesting answer.
References:
- Manz, Kathryn. "The effacement and vocalization of pre-consonantal l in Old French". 2001.
- Rickard, Peter. The French Language in the Seventeenth Century: Contemporary Opinion in France. 1992.