Ответ 1
Я думаю, что разница между ними сводится к доступу. Переменные системной среды доступны для любого процесса, а свойства системы Java доступны только для процесса, к которому они добавлены.
Также, как указано в Bohemian, переменные env задаются в ОС (однако они могут быть установлены через Java), а свойства системы передаются как параметры командной строки или устанавливаются через setProperty()
.