Demos spawning without shields is not a bug, it's actually a cvar with intentional behaviour. The description is "Stop the Demoman class from charging with shields: (1 = yes, 0 = no)" which infers all demomen, but the code to find and delete shields only runs on red demo spawns... but for all...