However, one other advantage of leaving the table in Flash : a rogue program cannot corrupt the vector table by scribbling over it.
That is a good point - however the rouge program will then be scribbling on your variables. You can say one is better/worse that the other, but that is a tough call. A bug is a bug, and will bite you in the end. A least if you scribble the vector table, good chance your program will crash sooner (like while still in development). This might sound like an odd thing to say, but crashing sooner in an obvious way is better than later (after 10,000 units have shipped) in some tricky way that is hard to notice.
One thing I do is set it up so exceptions will print on the uart, and then leave it hooked up to a terminal program during development. I have already found some bugs that way that I might have never noticed.
Like spurious interrupts - it was harmless, but still undesired (I was resetting up a timer, and I cleared the pending bit after the interrupt controller had already seen the interrupt, then when the iack cycle comes the interrupt has already been cleared, so the module does not acknowledge it).