The general concept of a stack has a type, and you can push and pop items of that type. In case of x86, that type is the active operand size. It's not a bug.
"Intel allow" - no they don't. In 16 bit mode you can only push a word, nothing else. In 32 bit mode you can only push a dword, nothing else. In 64 bit mode you can only push a qword, nothing else (and you don't even get a 64 bit immediate version). That is without an override, but that's gonna get you into trouble fast. You don't get a 8 bit push because there is no 8 bit operation mode.
This also maintains the natural alignment of the stack. If you want to access byte data on the stack, you can treat it as general memory and use mov
and other instructions as usual, after allocating an aligned chunk.