Note:
gap> IdentityMat(2, GF(2));
[ <a GF2 vector of length 2>, <a GF2 vector of length 2> ]
gap> IdentityMat(2, GF(4));
[ [ Z(2)^0, 0*Z(2) ], [ 0*Z(2), Z(2)^0 ] ]
gap> IdentityMat(2, GF(512));
[ [ Z(2)^0, 0*Z(2) ], [ 0*Z(2), Z(2)^0 ] ]
gap> IdentityMat(2, GF(1024));
[ [ Z(2)^0, 0*Z(2) ], [ 0*Z(2), Z(2)^0 ] ]
Note except for the first, these all don't allow recovering the base field from the matrix. For the one over GF(4), a call to ConvertToMatrixRep would "fix" that, but not for the latter two.
The "proper" fix would be to use MatrixObj instead of "lists-of-lists" for the matrices, but we've been saying that for over a decade and it is still not usable in general.
So in the meantime, it might be useful to make it possible to specify more than just an "example object" for HTCreate and Orb: E.g., also a base field.