まず前提として、発音とスペリングの乖離をあまりに厳格にとらえようとすると現代語のほとんどはラテン字母(いわゆるローマ字アルファベット)では乖離なしには表記できないという問題にぶち当たります。ローマ字はラテン語を書くためにできた文字で、現代語の多くはラテン語にない音を持つためスペリングと発音が完全に一致したいわゆる「ローマ字読み」はできないのです。
そこで、二つ以上の文字の組みで一つの音を表したり(ch, th など)、ラテン語とは違う音を与えたり(フランス語の u)、文字に記号を付けたり(ドイツ語のウムラウト文字、フランス語などのアクセント符号の使用など)、作字する(æ, œ など)などで対処しています。
このようにラテン語式の「ローマ字読み」とは違うものの、各言語独自の綴りと発音のルールがあるものです。ここで「英語やフランス語で発音とスペリングが乖離する」というのは例外が多い、統一した規則が立てにくいということとなります。
フランス語は綴りと発音の間には比較的分かりやすい相関関係があります。主に初学社を悩ませるのは語末の子音字で、読まないことが多い(crfl "careful" は読むことが多い と参考書にはよく書いてあります)が、それを知るためには「文法的知識」を必要とします。文字の読み方を覚えただけでは対処できないということです(動詞語尾 -ent, -s, -t は読まない。複数形の -s, -x は読まないなど)。読みのしないものを後生大事に残しているのは文法的機能や同音異義の区別を見た目で示していること、一部は起源であるラテン語への回帰もあります。
英語の場合は、発音が変わったのに綴りを放置したこと、変えようとする気運が高まらなかったことによります。古英語から中英語に移行するときには発音にあわせて綴りが変わりました(stan - ston, hnutu - nute, note, hlaf - lof etc.)が中英語から現代英語へは綴りに大きな変更がされていません(ston - stone, nute - nut, lof - loaf。黙字も放置 -gh や wr-, kn- など)。
さらに、ノルマンコンクエスト以降フランス系の単語が大量に流入し、生え抜きの英単語と外来の英単語で綴りと発音の「2つのルール」が混在してしまったことも原因です。au, ou, ch などの綴りは旧来の英語にはなかったものですがこれが古くからの英語にも適応されるようになったり、フランス語にはなかった [θ] がフランス系の単語に適用されること(throne : 初めは [tro:n] のように発音された)もありました。
チョーサー(14世紀)の原文には多くのフランス系の単語が見られます。この頃はまだ綴りと発音の間には分かりやすい規則がありましたが、外来系独自のルールが見られます。
最後に、英語とフランス語が綴りと発音の不一致の例によくだされる理由に、この二つの言語の特徴である、語尾の弱化が進んでいることが挙げられます。読まなくなったのに文字が残っていること(フランス語)、いろいろな母音字で表されるところがアクセントを失うと結局同じような発音になってしまうこと(英語の弱音節)がこれによります。あまり知られていませんがデンマーク語も規則にあわない綴りが割とあり、ロシア語も(アクセントの所在が分かっても)予想のつかない発音になるものが比較的多くあります。