Это просто исторически сложилось, и связано не столько с операционной системой, сколько с файловой системой.
В FAT16 расширение хранилось отдельно от имени, а операционная система распознавала расширение исполняемых файлов, чтобы запускать их.
В Windows пошли дальше - добавили ассоции для других файлов, к которым привязали запуск софта, ассоциации хранились в реестре и соответсвенно что запускать определялось системой, вне зависимости от вызывающей программы.
В современной NTFS расширение это уже тоже просто часть имени.
В Линукс изначально файловая система не хранила расширения отдельно, а запуск программы разбирался по заголовку файла. Вдобавок графический интерфейс появился гораздо позже, и запуск документов и других не-исполняемых программ по ассоциации делали именно в графическом интерфейсе, а не на уровне системы - сама система работает только с исполняемыми файлами, для чего есть аттрибут execute.
Вот собственно и все - то есть исторически возникло от организации файлов и файловой системы.
Оба подхода по-своему удобны.