Richard, I have a script I will post tomorrow, which purges the older reports. It has parameters you can specify, to keep either the last x number of reports, or the last Y numbers of days' worth.
I got it from Ryan Sandness, in MBS support. I have it running on a schedule, in SQL.
However, I thought it was no longer needed in the newer CU versions. I'll have to double-check that.
In any case, I'll post it for you tomorrow.
By the way, I agree with you about how it doesn't get rebuilt at some places, but it does at others. I think it has to do with the complexity of the environment, number of simultaneous users and reports generated, whether they use multicurrency, budgets, AA, etc.