Hey @NikkiBraun!
I can see where this would be frustrating, but I think I also know why it is happening. As you stated in your questions, "I understand not re-issuing the same badge when it is still within that 2-year time period from the previous award." If the students are using the exact same assessment with the exact same badge assertion, Credentials is still seeing the badge as expired because it is the same badge assertion.
Here is what I found while exploring this issue:
I tried going into my Canvas course, removed the badge assertion from the assessment, and added the same badge back to the same assessment. While this did allow the badge to be reissued with a new badge assertion, it reissued the badge without the student re-taking the assessment because the student already had a score for this assessment. So, partially what I wanted to happen, but not completely.
Then, I found what worked. In my Canvas course I duplicated my assessment (a New Quiz) and added the same badge to the duplicated assessment. So, now I have two of the same assessments in the same course with the same badge added to each assessment. The badge assertion associated with the original assessment taken two years ago has expired. Two years after earning the badge the first time, when a student takes the duplicated assessment and passes, this badge assertion awards the badge with the current date setting the expiration for this badge two years in the future.
Now, there is a little extra work with this method. To make this work, I would consider maybe duplicating the assessment once a year, adding the badge to the newest version of the assessment, and hiding any of the previous versions of the assessment. While this could be done every two years, in my mind it makes it easier for me to put a date on the calendar every year and go through this process rather than try to remember to do this every two years. For an easy reminder, you could add the year to the assessment title. (ie. Assessment 2024, Assessment 2025, Assessment 2026)
This is the only way that I have found this to work. If someone else has any suggestions, hopefully they will chime in.
Let me know if you have questions or would like to discuss this in more detail.