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.