「城」は本来は「き」と読むのが正しいのだが、
「宮城」「葛城」など前に何かが来ると「ぎ」と読む傾向がある
これは連濁という日本語独自の音韻規則で、
例えば「宮城」の場合、古代には「みやのき」と読んでたのが
「みやのき」→「みやんき」→「みやんぎ」→「みやぎ」と変化したものという説がある

なぜ「茨城」は例外的に連濁が起こらないのかというとこれも諸説あるのだが
同じ濁音の「ば」と被るのを嫌って「き」の濁音化が抑止されたという説がよく言われる
その他には濁音化を起こしやすい茨城弁(「生きる」→「生ぎる」など)に対する
茨城県民自身のコンプレックスからあえて濁音化が忌避されたという説もある

一方で「いばらき」と正式な読み方があるのにもかかわらず
なぜ「いばらぎ」と間違う人が多いのかと言うと、
前述の連濁の規則が過剰般化したものという説や、
「茨城」という地名は現在では「茨城県」として用いられることが多いため
「Ibarakiken」の「k」の音が被るのを嫌って「Ibaragiken」と変化したというのが考えられる
実際に同じ茨城でも「東茨城郡」なんかは
「いばら『ぎ』ぐん」では逆に言いにくいんじゃないか