Current draw at digital output pin differences in two equally coded segments -probable cause?
digitalRead reads the state of the pin, not the value in the output register. If a heavy load is pulling the pin voltage low then it will read as logic 0 even if the output register bit is set to 1. Your first code example tries to toggle the output level by inverting the logic level found on the pin, but because it is always reading low the output will always be set high. Current is doubled because the output is 'high' 100% of time, not the 50% you expected.