I like that design. Classes were a mistake. All of fpc should be rewritten with record/objects.
If NOCHECKS was called something LightFileStream_NOCHECKS, it could be enabled globally in someone's project, without potentially disabling checks in unrelated units.
Unfortunately this is not as fast as it could be, since fpc keeps fields like FHandle on the stack, even if it could keep it in a register, when everything is inlined
If there were TFileStream compatible methods like function Write(const Buffer; Count: Longint): Longint; and the TLightFileStream was an object, one could write through a method pointer @write, and switch between TFileStream and TLightFileStream polymorphically,