I'm not sure if your asking why I choose call over using delayed expansion or what exactly it does.
No real reason to use call over over delayed expansion here(maybe just a subconscious character count thing....). Using set normally looked promising, except in reality it was throwing back the invalid batch parameter error.....
If it the later, which I doubt because your such a pro at this, it's basically how everyone got along before delayed expansion (dos, 9x, nt4). The "nested variable" section of my how to (link in sig) explains it.
Batch Variable how to