In GUI, you can only use the sounds you have listed in the sound editor. They auto-inject the needed jass lines for their setup and then provide you variables you can address in GUI.
In jass, there are functions like
native CreateSound takes string fileName, boolean looping, boolean is3D, boolean stopwhenoutofrange, integer fadeInRate, integer fadeOutRate, string eaxSetting returns sound
so that actually allows you to spawn new sound handles and ofc these handles should be destroyed if no longer needed. The advantage is that the sound can be constructed from a string path dynamically, there are more options and you can have multiple instances of the same sound file in order to play them in parallel, although that is limited.