I had this whole thing typed out, then my brain hurt, then I realized I was crazy.
So here's try #2 -
I don't know exactly why or how, but I think you're confusing the masstagger since you are basically telling it to move the files from cd1 into a new directory and take everything else with it. However 'everything else' includes the files from cd2. And vice versa, not to mention both times it would want to take the common jpg files. You'd have to ask a developer exactly how this would confuse things, but you can see it's bad.
Solution? From my perspective you should separate the discs into 2 folders (cd1 and cd2) and copy your albumart to each. This is if you want to use the masstagger to move mp3s and other associated files. It should be ok to just move the files without parent directories and others. You could use xcopy after the fact to move other files if you want.
I would also slightly change your code (which may solve the whole thing, again I don't know and I'm sorry to say I'm not willing to test it out) -
CODE
%album%\$if(%disc%,cd$num(%disc%,1)\,)['['$if2(%vinyltrack%,%tracknumber%)']' ]%title% - %artist%
I moved the \ after $if(%disc%...) inside the $if() statement. That way, if there is no disc number, masstagger isn't trying to create another directory level. IE something that would look like this -
albumname\\[01]title - artist