Because it's almost always public (you can't use it if it's not, other than via private reflection, so passing isPublic: false is silly; the docs say as much).  We could seal it if we wanted to, but it'd be a change from netfx, where you could derive from the generated type.