scala native — это как будто ты хочешь писать на си, но с использованием скалы. То есть всё крутится вокруг нативной экосистемы.
А грааль — это когда ты пишешь обычное жвм приложение, которое потом компилируется не в байт код, а в нативный бинарь. Тут всё крутится вокруг жвм экосистемы.
Не согласен вообще, на неитиве можно писать как на обычной скале с ограничением, что исходники либ доступны(точнее из nir). И это следствие главного отличия. Sn компилирует скала код(пусть даже через промежуточное представление) и без скала кода, ты не сможешь сделать бинарь. Именно поэтому они делают свою реализацию джава либы на скале. Граальный неитив имедж работает с байткодом и ему без разницы какой там язык