1252 does not have a character assigned to 0x81. If you store 0x81 in the database as 'latin1', then it needs to error or do something weird. If you store u0081 in the database, that's a control character in the C1 block that doesn't exist in latin1, so it needs to error or do something weird.
If it violates the documentation about invalid characters, that's a problem, but that's not latin1 being incompatible with 1252.
If mysql handled columns declared as "ascii" as utf8 that would be "compatible" in the sense you're describing. I think it would be fair to say "mysql ascii isn't actually ascii" in that case though.
I see your point, but in that case I certainly wouldn't say it mishandles ascii. Defining some undefined behavior is very different from changing existing behavior.
Plus that's a different scale of change because it's going from fixed width 7-bit to a variable width scheme.
If it violates the documentation about invalid characters, that's a problem, but that's not latin1 being incompatible with 1252.