__PAGEZERO, the first load command in a 64 bit Mach-O binary, specifies a segment size of 0x100000000 in virtual memory.
$ otool -lV binary
command 0
cmd LC_SEGMENT_64
cmdsize 72
segname __PAGEZERO
vmaddr 0x0000000000000000
vmsize 0x0000000100000000
When you do break *0x00055de4
your breakpoint ends up in this segment of zeros, which explains why it's never hit. 0x0000000100055de4
is the address of the instruction (found at 0x55de4 in the binary) when loaded into virtual memory.
For 32 bit binaries the __PAGEZERO size is 0x1000, which explains why the pattern does not apply.