O sinalizador Executável está lá para indicar ao kernel que os dados devem ser lidos e executados. Isso é implementado com uma chamada diferente para executar algo e ler algo. Para programas compilados, é bem possível ter acesso somente de execução a ele e não ter acesso de leitura; você não pode nem mesmo 'copiá-los' em outro lugar. Para itens interpretados como shell-scripts, a leitura é necessária para a execução.
Eu conheço uma distro Linux que usa o sinalizador de execução para controlar quais scripts são disparados na inicialização.
Em suma, o sinalizador Execute é usado para indicar a capacidade de código compilado para ser executado. O código Interpreted é executado através do processador pai e só pode precisar de 'read'.