QEMU is not at fault here. The discrepancy comes from the BIOS.
When I create a disk image as described in the question, then attach it to a QEMU virtual machine and use the info qtree command in the monitor, this is the geometry I see reported:
cyls = 248 (0xf8)
heads = 16 (0x10)
secs = 63 (0x3f)
The same geometry is ...