Much like the U flag, the B flag in the status register doesn't actually exist in hardware. That means that reading the status register should always yield a 0 in the B flag place. The B register is only ever used when BRK or PHP are called to place a 1 in it's place on the stack.
This is implemented in code only by guarding the BRK and PHP and hardware interrupt routines.
But pulling a value with status flags from the stack and putting them into the status register (PLP) will set the Break flag, even though it should always be 0.