Отвечает Есения Павлоцки, лингвист-морфолог, эксперт института филологии, массовой информации и психологии Новосибирского государственного педагогического университета.
У этого слова в нашем и родственных языках есть множество самых разных вариантов написания, что для фольклора вообще нормально: Яга, яга-баба, еги-баба, ягая, Ягишна; белор. Ба́ба-Яга́, Ба́ба-Юга́, Ягіня; укр. Баба-Язя, Язя, Язі-баба, Гадра; польск. jędza, babojędza; чеш. jezinka, Ježibaba.
Его происхождение и этимология вызывают споры.
С одной стороны, праславянское *(j)ęgа сближается в разных языках с такими словами: сербохорв. jeзa «ужас», jeзив «опасный», словен. jezа «гнев», jeziti «сердить», др.-чеш. jeze «lamia», чеш. jezinka «лесная ведьма, злая баба», польск. jędzа «ведьма, баба-яга, злая баба», jędzić się «злиться» и так далее.
А еще есть представление о связи со словом язва и различным обозначением змей в славянских языках.
Так или иначе, орфографическая практика для этого слова сложилась следующая:
если перед нами упоминание сказочного персонажа, то употребляем слово как имя собственное – Баба-яга.
если же это метафора (например, называем так злую соседку), то используем как нарицательное – баба-яга.