There are functions where it makes sense to make use of the ability for functions in SLua to return multiple values, that is at least where the list would have been static and returned around or less than 4 values. Here are a few usecases where this make sense:
LLEvents:on("on_damage", function(events)
for _, ev in events do
local damage, type, original = ev:getDamage()
end
end)
llGetBoundingBox:
local min_corner, max_corner = ll.GetBoundingBox(object)
llGetPhysicsMaterial:
local gravity, restitution, friction, density = ll.GetPhysicsMaterial()
llLinksetDataDeleteFound:
local deleted, skipped = ll.LinksetDataDeleteFound(pattern, pass)
---
There are many other functions where it does NOT make sense however, for example llCastRay, etc.
However functions that have a fixed list of values and where there isn't an unmanageable amount (less than or equal to 4 return values I think), multiple return values make sense.
Note that unlike many other programming languages, multiple returns are actually very natural in Lua and part of many standard library functions. Even looping through array-like or dictionary tables you would use the handy ipairs/pairs functions with their multi returns.