Simply put...
why does
setTimeout(\'playNote(\'+currentaudio.id+\', \'+noteTime+\')\', delay);
work perfectly, calling the function
Because the second one you're telling it to call the playNote function first and then pass the return value from it to setTimeout.