Type Record is not strict - allows subtype to be passed in

This is simply (the very definition of) subtyping, and as such intentional. In particular, this so-called width subtyping on records is the central mechanism underlying object-oriented languages: a subclass can have more fields than a superclass, but still usable everywhere its superclass is.

In more traditional languages, subtyping isn’t automatic but has to be declared, but the principle is the same. Motoko has structural subtyping, so the subtype relation is inferred. It shares this property with some other more modern languages – TypeScript would be the most well-known example (though unlike TS, Motoko’s type system is sound :)).