Normalmente, os recursos são herdados para as crianças. Conforme declarado na página de manual :
A child created via fork(2) inherits copies of its parent's capability sets.
O problema com os scripts é que eles não são executáveis. Seu programa de chamada (geralmente o shell) tem que verificar a primeira linha para um shebang, então chame o intérprete real (definido no shebang) com seu script como argumento.
Isso significa que você terá que definir o recurso no interpretador, não no script.
O mesmo se aplica a suid
bits e outros sinalizadores especiais.
Então, você faz uma cópia do seu intérprete, configura os recursos que deseja nele (também verifica se ninguém pode acessá-lo através de chmod / chown), e chama este interpretador copiado em sua shebang. Você também pode fazer a lógica setcap no seu script.