Зачем нужен return, когда есть print?
Если нужно просто вывести на экран результат - разницы нет, в данном примере. Если нужно в дальнейшем использовать значение, возвращенное функцией, то, конечно, нужен return. Допустим, как тут, если нужно сравнить два числа, и вернуть из них большее, чтобы затем работать с ним дальше, можем сделать так:
def func(x, y):
    if x > y:
        return x
    elif x == y:
        return 'Числа равны.'
    else:
        return y

max_num = func(3,4)
И в результате в переменной max_num будет наше наибольшее число (ну, либо текст). В данном примере несовсем понятно, конечно. 

Ну вот допустим у нас есть встроенная функция max, которая возвращает максимальное значение из переданных параметров, нечто похожее на то, что сделали вы. Для более наглядного примера я бы рассмотрел random.choice()

Предположим, у нас есть список элементов и нам надо из него выбрать случайный элемент и работать с ним дальше. Мы вызываем random.choice(), который через return вернет нам этот случайный элемент и мы будем с ним работать дальше. Например, использовать его как часть текста. 
greetings = ['Привет', 'Hello', 'Здравствуйте']

greeting = random.choice(greetings)

print(f'{greeting}, master')

В итоге при каждом запуске кода мы будем получать случайный элемент списка в переменную, и все это благодаря наличию return в методе choice. Если бы там было не возвращение элемента через return, а просто print. то тогда наш случайный элемент печатался в консоль и на этом все. Ну, надеюсь понятно. 

В функцию вы передаете свои переменные и получаете из нее результат работы через return, для использования этого результата в дальнейшем. Если такой результат не нужен - то и return по сути тоже не нужен. 

Если надо будет найти максимальный элемент и использовать его в дальнейшей работе, то с таким кодом - 
def func(x, y):
    if x > y:
        print(x)
    elif x == y:
        print('Числа равны.')
    else:
        print(y)

max_num = func(3,4)
print('Максимальное число -', max_num)
получите None в ответе.
Смотрите: print() - это отдельная функция, которая выводит результат, но бывают случаи, когда результат функции нужно сохранить в переменной, допустим. В таком случае делают return функции - За функцией закрепляется значение. В предложенном вами варианте нет разницы в использовании обоих вариантов!