As @Baozhu says, the 256k of internal flash is also used to store the CircuitPython runtime itself. It’s split 192k for CircuitPython and 64k for the user filesystem (which includes the filesystem overhead too.) Boards with more flash like the Circuit Playground have an external SPI Flash chip that is used to store the user filesystem and CircuitPython then uses 256k for itself.
The filesystem on UF2 bootloaders is fake so don’t read into its size. I’m not sure if the Xiao has a UF2 bootloader or not.