A lot of this stuff is historical hangover. But that doesn't mean it's useless.
Commenting the changes on a file is pretty pointless, the file stopped being the unit of code organisation many years ago. I put headers on my functions, but that's to explain the purpose of the function/method (plus it makes the code easier to scan). I also put concise change histories in those function headers... not because a change history in code is necessary, but because SCM systems aren't perfect, and I've seen SCM databases lost before. It's like backups - the disaster only has to happen to you once before you start worrying about this stuff on a daily basis.
My buddies at work drive me nuts because they rely religiously on the SCM to track their changes, but don't put proper comments in the SCM either. So when the inevitable management post-problem fault-analysis happens they have to sit there for hours on end trying to figure out why they made a given change three years ago.