datachange() is ok but not really good enough to rely on its own. I agree MDA tables help as well.
But generally best to go for overkill and reorg/index rebuild as much as possible - if you've got a 24 hour window for maintenance - then do as much as you can in those 24 hours.
Personally I'd like something built into the server to do this for you. Since every location has a version of this might as well have it built it - and be a good feature to the more novice of DBA's