Анонимно

почему слова «генерал-майор», «герой-панфиловец» пишутся через дефис?

Ответ

Анонимно
генерал - майор   - это сложное существительное, обозначающее  звание( всегда через дефис)
А в сочетании герои-панфиловцы приложение - "панфиловцы". Слово стоит после определяемого и совсем далеко по смыслу от прилагательного.