I assume this is a bug, as an exemption is not mentioned in the original feature-request (or the staff answer to that request)
The reason this is not mentioned in the original request or its staff answer is because it was added a few months later and the original posts weren't edited to reflect the change.
and I can't think of any reason why there would be such an exemption.
As the above linked request on Mathematics Meta states, there is one good reason why this exemption exists. Essentially, when a question is reopened, any pending delete votes on it are cleared. This change was to allow users whose votes were cleared as a result of the question being reopened the ability to vote to delete again.
I believe the exemption as designed should stay, because:
- Such votes do not contribute to the delete/undelete wars the rule was designed to prevent, as they don't result in the post getting deleted.
- A similar exemption currently exists for close and reopen votes; they can be recast later on if they get cleared (as a result of aging; there is a waiting period of 14 days before being able to do so).
- In the current system, 3-5 reopen voters with only 3k+ reputation can override the opinions of three (or more) 10k+ users voting to delete. Just because the question was reopened doesn't necessarily mean that the prior votes to delete are invalid; if the question later gets closed again, those earlier delete voters should be allowed to recast their votes. (The current system of clearing delete votes should be retained, as the reopening may have been as a result of resolving the issues that caused it to be eligible to be closed and deleted, and prior voters should be required to affirm that their prior votes are still correct.)
However, as you noted, the current system configuration deviates from the design, it's possible for voters to vote again even if their prior vote resulted in deletion, and the question was undeleted, reopened, and closed again (or, more rarely, reopened while deleted and then undeleted and closed again).
As animuson mentions in the comments, this is likely because when checking if a user can vote to delete, it goes into the user's history to check to see if there's no delete vote they cast since the last reopening event. The issue can be fixed by using the same check as is done to check for repeated close and reopen votes: check the post's history for a prior successful deletion event with the user attributed. This would make it conform to the design rather than deviate from it as above.
However, I think that such cases are sufficiently rare and the check may be technically easier to implement the way it currently is, that the team decided to do it that way rather than my proposed way above. Back before any sort of restrictions were introduced, there were only 133 posts that were voted to delete more than once by the same user across the entire network, of which only 12 were voted to delete three or more times by the same user. Since the instances of this behavior were already very rare prior to the October changes, I think the team may have deemed it OK to leave a very tiny loophole that would be even more rarely used.
However, the team shouldn't revert the later change made in January in whole, per the reasons I pointed out. Either my proposed fix should be implemented, or the system should stay as is.