Вроде бы разница такая:
source .env - дает доступ к переменным из источника именно текущему шелл-окружению
export NAME=VALUE - перадает значение запущенным из текущего шелл окружения другим подпроцессам
На что это влияет
Пусть у нас есть .env файл с таким содержимым:
BASE_VAL=7
(просто значение, заданное через равно)