You asked "what is the right thing to do?" - that would be to take care of yourself and your business. I would have asked the guest to check their credit card to see if it offered trip cancellation insurance. Have guests check this first.
The guest also needs to cancel so that your calendar is reopened.
As far as your calendar not being fully booked, so is it "just" to the guest? It doesn't matter because you will never ever know if someone else would or would not have booked some dates. That's why I don't offer credits for future reservations. If I felt like being generous, then the guest would need to choose weekdays during the off season.
Think about this way. Would a hotel allow someone to reserve the entire hotel, and then offer a future credit for the guest to reserve the hotel again? Our 1 room is the equivalent of a hotel with many rooms. The guest took your entire hotel off of the market.
Of course keep to your word about the 70% credit since you already offered. But would limit that credit to 70% of the original amount. You don't want this guest booking 3 days during a holiday and receive a 70% discount on rates where you can earn double your regular rate.