If that block is set to proceed "When Changed" it proceeds immediately after the next BATTERY_CHANGED broadcast gets recieved, without checking if the level changed or not. This makes logical sense but it's "humanly unintuitive".
In order to make the block check if the battery level becomes different, it must be preceded by "is Battery Level" block (the same block, but proceeds Immediately) with an output variable that is used as input argument both for the min and max range of the "When Battery Level" block.