Was aber geht, ist die Variante mit den TBytes
procedure Read(const FileName: string; out Bytes: TBytes); overload;
und dann die TBytes zu PFussballMatrix casten.
Was am Ende aber auf dasselbe raus kommt, wie ein Read mit dem Stream - genau das passiert nämlich auch in dem TBytes-Overload.