The National Parks have started doing a restriction on reservation changes to stop the holiday weekend gamers. Now, if you make a reservation, you have to wait 15 days before you can change it.
So, say you want the 4th of July weekend this year. Before you could book a site for June 16-30th as soon as the window open. Then in the next couple days, you change it to June 21 - July 5th. Then way down the road, you change it to June 30 - July 5th.
Now, if you book the site for June 16 - 30, you can't make any changes until AFTER that site has opened to the general public for the 1st of July, so anyone can come in and book the holiday weekend before you can change your reservation.
For folks who book two weeks just to show on the weekend, simply requiring a "must occupy the site on the first night of the reservation or you lose the entire reservation" policy works well.
For actual no shows and repeat cancellations, I think a sliding penalty scale is the way.
Stuff happens and penalizing everyone harshly for a single cancellation or no show is unsympathetic for the folks who had a breakdown on the way to the campground, etc.
So, for the first no show in a calendar year, it's a $50 fee ($75 if for a holiday weekend reservation). And you forfeit your reservation fees.
For the second no show, it's a $200 fee ($300 for a holiday weekend reservation) and you forfeit your reservation fee.
For the third no show, it's a $500 fee ($750 for a holiday weekend reservation), forfeit your reservation AND your account is banned from making any reservations for the following calendar year.
For cancellations, if you cancel more than 90 days out, it is a $20 fee.
If you cancel 30-89 days out it is a $50 fee.
If you cancel 7-29 days out , it is a $75 fee.
If you cancel less than 7 days out, it is a $200 fee.
However, if you have cancelled once already in the calendar year, the fee is doubled. If you have cancelled twice already, the fee is tripled AND your account cannot make any reservations for the next year.