Earlier quoted context omitted.
Git does have a mechanism to remove data from history. It's ugly, and you end up with new commit hashes, but it works. It was designed for situations in which a developer accidentally adds something sensitive, like a production database snapshot, to source control.
Yeah so you could do a rebase and remove all of the user’s commits, but their work would likely still remain in the subsequent history- integrated as changes in some way. It would be a real mess.
Cases where they are not separate (think digital signatures/signing keys) are a slightly more complicated question to answer.