A distinção entre kernel e usuário (user = não-kernel) é muito clara: eles têm diferentes interfaces, eles rodam em diferentes modos de processador, ...
Outras separações dentro do reino do usuário não são tão claras. Um shell é um programa cujo trabalho é executar outros programas. Por esta definição, um servidor web pode ou não ser um shell dependendo do que é usado: um servidor web que serve arquivos estáticos não é um shell, um servidor web que executa aplicações web é um shell.
Meu conselho é não dar muita importância a essa hierarquia. Faz sentido em um contexto específico (o dos computadores típicos do início dos anos 70), não é um conceito geralmente útil.