Причина номер 1: потому что программист может относительно легко работать на зарубежного работодателя или вообще уехать в другую страну.
Посмотрите на сисадминов - то-же ИТ, но зарплаты намноооого ниже.
По моему опыту работы менеджером в ИТ департаменте, даже программисту 1С всегда платили больше чем админам.
Причина номер 2: потому что зарубежные компании, имеющие возможность платить хорошо, имеют офисы в России = конкуренция за качественные кадры.
Я перефразирую рынок программистов не российский , а мировой.
Потому что программист может быть дворником, а дворник не может. Ну и какой нить Сбертех, где можно зарабатывать нереальные деньги, не особо разбираясь в сути профессии, но иметь потенциал к бюрократии и очковтирательстку.
Но ведь такая же ситуация в большинстве сфер производства.
Зарплата в любой отрасли обусловлена уникальностью знаний и умений исполнителя, вагоны разгружать хоть и тяжело, но многие смогут, а вот кодить... Думаю ответ не сложен для понимания