One more thing I noticed is that when I import a loop which is causing issues, then export the loop (in its entirety) as audio, and re-import it into Spark, I don't get this issue. I can then set the start point the the first snare hit and it'll be perfectly in time with the metronome.
For some reason, Spark doesn't like the Original audio file and exporting it from Spark seems to 'fix' it. I did notice that my audio interface driver was running at 48000 sample rate and that the audio file is at 44100 sample rate. So I then changed my audio interface driver to 44100 sample rate to match the sample rate of the audio file, but unfortunately it hasn't solved my issue.
What also caught my attention, is that spark creates additional files when I import audio files. For instance, if I have a sample called 'drumloop1.wav', Spark will create a file called 'drumloop1.wav.44100'. And it will create a file with '.48000' at the end when I have my audio interface driver set to 48000 sample rate. Why is this?
One more update before I head off for the night: I found out why my 'export audio -> re-import audio' workaround works...it's because the original drum loop was 2 bars long and when I exported it, I only exported it 1 bar long. I just tested this, and indeed...if I export the same loop also 2 bars long, and re-import it into Spark, I get the same issue. Export it as a 1 bar loop and re-import it, the issue disappears.
Seems to me that Spark has trouble with properly handling hitpoints in drum loops longer than 1 bar...atleast in my situation. Hope this additional info can help get closer to a solution, because it's a pretty massive dealbreaker for me t.b.h.