Another way to think about it is that a shell has some of the same advantages as functional programming. In particular, everything is easily composable. Taking small primitives and combining them systematically leads to significant expressivity. This is an important advantage over GUI apps which are not really composable in any consistent way.
> GUI apps which are not really composable in any consistent way.
Production-biased GUI apps not being composable and linkable is a consequence of the political economy of software production dictated by their makers; not an inherent trait of the GUI as a form.