The custom save paths set in ZSNES work as expected if the program is opened and a ROM is selected from within its open dialog.
If a ROM is dragged to the ZSNES icon (or 'open with' is used) the saves are put into the user's home directory.
I presume this is just because the relative path for ZSNES is its own folder when opened while the relative path is different when a file is dragged to it.
Paths relative to the emulator should stay relative to the emulator executable.