i believe OP is specifically asking about iterating over a keyed table, asking: is pairs() preferable to next()?
pairs() is often preferred simply because it’s easier and cleaner - it’s literally just a wrapper around returning next and the table. next() might give some trivial performance advantage over pairs() in certain circumstances, but it’s not going to be enough to matter for most use cases. (and certainly nowhere near the difference between keyed and indexed iteration)
the OP appears to believe that pairs() is a “pointless function call”, presumably because they think that “next” doesn’t imply a function call also (given the syntax you just pass a reference in the loop), but rest assured that next will be called as a function also.