Return может вернуть только (без каламбура) целое число, и вы можете вернуть только 1 значение
Выходной параметр может возвращать все типы данных, и вы можете иметь несколько выходных параметров на процесс
A оператор выбора может возвращать набор результатов
Все зависит от того, чего вы хотите достичь в своем коде вызова, я сам предпочитаю выходные параметры