JFS (and probably NTFS and who knows what else) support Extended Attributes, which, like HFS forks, theoretically allow for arbitrary tagging and so on.

The bitch is that sometimes you want to preserve metadata, sometimes you don't, and it's rarely obvious which operations will/won't. (For instance, Mail.app appears to happily attach resource forks to messages, and various semi-automatic packing formats have been around for ages, while back in OS/2 or *NIX and-probably-NT but-I-don't-touch-that land, you'd have to think a bit to accomplish the same.

Of course, if versioning data is stored with the file, you're also screwed when you delete that file. Unless you're using some log-structured-FS that doesn't exist and would raise more 'So, uh, exactly how far can I roll back? Oh crap shouldn't have filled the slice with hentai DivXes ^H^H^H^H^H^H^H^H^H^H^H^H^H^H a giant temporary file or core dumps or something last night' issues if it did.

This is all horribly obvious but I'd like to see someone figure out how to do consistent interaction design for it because flat files are getting kind of boring.