It's true that pipes are more readable, and for many cases they will be the better option, but the example of nested functions just doesn't hold.
That's like saying someone would use this:
$result = $arr |> fn($x) => array_column($x, 'tags') |> fn($x) => array_merge(...$x) |> array_unique(...) |> array_values(...)
which is harder to reason about than the nested functions.
array_values( array_unique( array_merge( ...array_column($arr, 'tags') ) ) );
or
array_values(
array_unique(
array_merge(
...array_column($arr, 'tags')
)
)
);