Variáveis não são avaliadas em uma única string entre aspas. Você precisa usar aspas duplas. Se você não pode ou não quer usar aspas duplas para toda a string, você pode usá-las apenas para essa parte da string.
ruby -rjson -e 'j = JSON.parse($stdin.read); puts j["ChgSub"]["'"$GHREPO"'"][0]["Major"].to_s'
São três strings entre aspas separadas, uma ao lado da outra.
'j = JSON.parse($stdin.read); puts j["ChgSub"]["'
e
"$GHREPO"
e
'"][0]["Major"].to_s'