Очень сильно зависит от языка. Например если там все pass by value как в Rust и частично в C++ то multi-values весьма к месту. Если там хаскель или много есть обход по дереву в рекурсивном стиле то tail calls тоже могут пригодиться
multi values ещё очень сильно влияют на возвращаемые значения, потому что без них llvm компилит код так, что добавляется дополнительный параметр, в который нужно записать сложное возвращаемое значение