There are several calls to $parser->recursiveTagParse which we believe are unnecessary. For example, error messages are recursively parsed rather than using simple Message#parse. Error messages have no business including further tags.
Once these usages are removed, the code complexity is reduced because we don't need to pass the Parser object around, and don't have to consider edge cases with parser-function tags in customized messages.
The only legitimate usage is probably when we recurse into the content of a references section produced by {{#tag.
It's worthwhile to study the git history for each usage to reverse-engineer why this function was chosen.