Мне кажется, что раньше буква г передавала несколько другой звук г, близкий к диалектному, например, кубанскому. Или же к украинскому. Грубо говоря, что-то похожее на звонкий х. Этот звук придыхательный, в то время как буквой х передавался звук, по артикуляции больше похожий на к. Х - более резкий звук, h - нежный, похожий на вздох. В славянских языках, например, в чешском, буквой h передаётся звук, похожий на украинский г.
В некоторых русских словах этот звук сохранился до сих пор: лёгкий, Бог. У кого-то из русских поэтов классиков видела стихи, где они рифмовали слово, оканчивающееся на -г со словом, оканчивающимся на х (возьмём абстрактный пример: плох - мог). Значит, когда-то это было литературной нормой.
Думаю, именно поэтому имена героев мифологии греческого происхождения (Геракл, Гермес, Гера) и стали писаться с использованием этой буквой, поскольку она передавала звук, который тогда был ближе всего по произношению к звуку в иностранном слове.
Затем этот вариант транслитерации закрепился и стал обязательным. Эта система передачи иностранных имён и фамилий кириллицей стала традицией, хотя сам звук, который передавала буква г, качественно изменился со временем.
Это моя первая версия.
Вторая состоит в том, что это какое-то чередование звуков, характерное для индоевропейских языков.
Например, возьмём слово "Прага". По-чешски название этого города будет Praha, где h передаёт звук, близкий к украинскому г. Как видим, в русском варианте вновь на месте этого звука возникла буква г, которая передаёт современный русский звук г. Но и в английском названии этого города присутствует "г" - Prague. Немецкое - Prag, французское - Prague, итальянское - Praga.