What technical reasons are preventing ASLR from being randomized to a byte offset? On Linux it's to a 4kb page and on Windows to a 64kb region.
ASLR relies on features of the memory management unit of the CPU to map a physical page (i.e. at the hardware level) to an address in the virtual address space (which is the memory layout as seen by the current process). Since this CPU feature only work at the page level it is not possible to get a finer granularity from the CPU. Finer granularity would therefore somehow need to be in software which would be either not possible or terrible slow.