I do think it is a bug. The problem is that deactivate-mark is global
whereas mark-active (which is deactivated through the deactivate-mark
variable) is buffer-local.
It is not a bug, but it could be a misfeature.
However, changing it would be risky--other things might break. I
think it is safer to keep this unchanged.