print просто печатает. Но функция вовсе не должна именно "печатать", она должна что-то вычислять, сохранять результат и вызывать его в коде там где это нужно как составной элемент других вычислений. Вот для этого и нужен return
Функция — она как домик. Вы приходите в домик с гостинцами (аргументами), если они нужны. Затем в домике происходит какая-то работа, после чего вы выходите из домика — возможно, с каким-то результатом в руках. И этот результат кладете в то место, где был вызов функции.
Оператор return, по сути, производит выход из домика.