I agree with most of what you have said but let's not go too far. Even the mighty NFL has had to move to new markets to get better attendance, i.e St. Louis to LA. Things change, life happens, and if you don't put a good product on the field/track, people aren't going to watch no matter what city you live in.
One issue that NASCAR has to contend with, which is similar to baseball, is that the venues are just as much stars as the teams. Daytona, Birstol, Talladega, Charlotte, Watkins Glen, etc. You could say a similar thing about baseball, Wrigley Field, Yankee Stadium, Fenway, etc.
To that point, NASCAR should embrace it. Stop the repaves, let the newer tracks age a little bit. Create some history so to speak by involving the culture of the local city. Anyone watch the Kentucky Derby the other day? They have traditions that make the Kentucky Derby unique. Everyone gets dressed to the nines, the girls wear goofy hats, the guys act like they have an inside tip on the horse to win, and everyone "has" to drink a mint julep (which btw are terrible).
Nascar needs the equivalent of the Kentucky Derby fan fare each week. They also need a race like Monaco, all for showing off how much money people have. It should be the indy race or fontana race. Indy has a boring track so more people will pay attention if you bring the fancy crowd out. Alternatively, the fancy crowd in LA can be seen at the Fontana race. It only needs to be 1 race a year, the other 35 races can have their own theme. But that is what makes NASCAR and large events, fun.