Let's say you maximize performance of a single piece of pipeline (training on a dataset or something else), and you do it the same way for all pieces. The labels that were correct as inputs in training are your limitation. Why? Because when a mistake happens, you've never learned to recover from it, because you always gave the correct labels in your training.
What LLM pipelines do is probably something like this:
* a complex task is solved by a pipeline of prompts
* we tweak a single prompt
* we observe the output at the end of the whole pipeline and determine if the tweak was right
In this way, the joint loss of the pipeline is observed and that is ok.
But, the moment your pipeline is: POS Tagger -> Dependency Tree Parser -> Named Entity Recognition -> ... -> Machine Translation
and you have separate training sets that maximize performance of each particular piece, you are introducing label bias and are relying on some luck to recover from errors early in the pipeline because during training, the later parts never got errors as input and recovered to the correct output.