"зачем" - это слишком общий вопрос.
Например, ты делаешь библиотеку. Кому-то удобнее будет использовать ReturnType целиком и таскать его куда-то, а кому-то из твоей функции нужно только одно значение, он сможет взять его по имени или по индексу или через распаковку.
result = compute()
value, residual = compute()
value, *_ = compute()