Yes, lots of people used this on Atari ST and Amiga (Tempus editor on Atari comes to mind, which used the highest byte of address registers as additional faux registers).
Same tricks are used even today. E.g., have a look at Facebook's DiscriminatedPtr from the folly library, which uses the top 16bit of a 64bit pointer (otherwise unused) for type tagging.
There is a long tradition of embedding tags in pointers, for all kind of reasons (type tags, pointer/int discriminants, ABA counters, etc.). That's perfectly fine and it is one of the reason intptr_t exists.
The problem is when the architecture lets you get away with explicitly masking out the tag bits (i.e. a tagged pointer is a valid pointer) which makes it hard to evolve the architecture.
Same tricks are used even today. E.g., have a look at Facebook's DiscriminatedPtr from the folly library, which uses the top 16bit of a 64bit pointer (otherwise unused) for type tagging.