Are you asking whether it's legal to use an old-style header (single byte for
tag + length) on a version-4 key? Yes, it's legal to use old-style headers
whenever you are able.
Is it legal to use a new-style header on a version-3 key? Sure, if you don't
care about PGP2 compatibility.
Is it legal to generate the same key value in both version-3 and version-4
forms?
Yes, but since signatures hash the whole key packet, they will refer to
only one version or the other, so you can't mix and match. (You could
also have the same key value with different creation times, which would
all hash differently, and in v4 would generate different fingerprints.)
Are you asking what you should generate? If you know in advance that you're
generating material that PGP2 won't understand, you might use a new-style packet
to catch the incompatibility right away. If you don't know, you might use
old-style.
Some other esoteric considerations (that you probably should ignore):
If you get all excited about extra bytes, old-style encoding can be shorter.
If you don't want to compute packet lengths up front, it would appear that an
old-style indeterminate-length packet is legal for a single key in a file,
but the
new-style partial-body scheme is not.