Although it seems like a question of English language phonetics, monoxide is not an exception but a general trend.
Mon(a)oxide (vowel "o" dropped),
Dioxide (no "a" vowel in the prefix)
Trioxide (no "a" vowel in the prefix)
Tetr(a)oxide (vowel a dropped)
Pent(a)oxide (vowel a dropped).
The accepted spelling of diiodide is di-iodide in the grand Oxford Dictionary. It is also consistent with the other halides
difluoride,
dichloride,
dibromide, and
di-iodide
Nothing seems unusual about it.
As to the English language, someone wrote why b-u-t is pronounced differently from p-u-t? Some times we have to accept things as they are.