¿Cuándo la sustitución de comandos genera más subshells que los mismos comandos de forma aislada?

Ayer se me sugirió que el uso de la sustitución de comandos en bash hace que se genere una subshell innecesaria. El consejo fue específico paraeste caso de uso:

# Extra subshell spawned
foo=$(command; echo $?)

# No extra subshell
command
foo=$?

Lo mejor que puedo imaginar es que esto parece ser correcto para este caso de uso. Sin embargo, una búsqueda rápida que intenta verificar esto lleva a una serie de consejos confusos y contradictorios. Parece que la sabiduría popular dice que TODO uso de la sustitución de comandos generará una subshell. Por ejemplo:

La sustitución de comandos se expande a la salida de comandos.Estos comandos se ejecutan en una subshell, y sus datos stdout es a lo que se expande la sintaxis de sustitución. (fuente)

Esto parece bastante simple a menos que continúe investigando, en cuyo caso comenzará a encontrar referencias a sugerencias de que este no es el caso.

Sustitución de comandosno invoca necesariamente una subshell, y en la mayoría de los casos no lo hará. Lo único que garantiza es una evaluación fuera de orden: simplemente evalúa primero las expresiones dentro de la sustitución, luego evalúa la declaración circundante usando los resultados de la sustitución. (fuente)

Esto parece razonable, pero ¿es cierto?Esta respuesta a una pregunta relacionada con subshell me di cuenta de queman bash tiene esto en cuenta:

Cada comando en una tubería se ejecuta como un proceso separado (es decir, en un subshell).

Esto me lleva a la pregunta principal.¿Qué, exactamente, hará que la sustitución de comandos genere una subshell que de todos modos no se habría generado para ejecutar los mismos comandos de forma aislada?

Tenga en cuenta los siguientes casos y explique en cuáles incurren los gastos generales de una subshell adicional:

# Case #1
command1
var=$(command1)

# Case #2
command1 | command2
var=$(command1 | command2)

# Case #3
command1 | command 2 ; var=$?
var=$(command1 | command2 ; echo $?)

¿Cada uno de estos pares incurre en el mismo número de subshells para ejecutar? ¿Hay alguna diferencia entre POSIX y las implementaciones de bash?¿Hay otros casos en los que el uso de la sustitución de comandos generaría una subshell donde la ejecución del mismo conjunto de comandos no lo haría?

Respuestas a la pregunta(2)

Su respuesta a la pregunta