Because, I believe, "type foo = minval .. maxval;" is absolutely pure standard Pascal. In general the standards allow the attribute PACKED to be added to any type (this is hazy) so I believe "type foo = packed minval .. maxval;" remains completely legal anywhere. The compiler is always free to ignore the packed attribute.
The grammar in the standard (as noted in other posts) do not accept packed on subranges, so program containing such constuct is non-conformat. Of course accepting packed on subranges is a valid extension, but any compiler with grammar taken from standard will recect it. In fact, I think that in strict ISO mode (--pedantic ??) gpc should reject non-conformat programs, so also packed on subranges. By the way, FPC do not accept packed on subranges (I do not want to discuss if FPC is a Pascal compiler, but I find it reasonable to compile the same program using gpc and FPC).