In a centralized system, the database is the source of all truth and enforcer of rules. Enforcing a rule like "all names must be unique!" is easy.
In a decentralized system, like ssb, there is no single source of truth. peers must enforce a rule with collective action. This makes for a lot more wiggle room. To put it in database terms, it means anyone can write anything, but other clients will ignore what they think is invalid.
So, names is patchwork are somewhat like IRC, except that when I mention you @akkartik it records both your human name and your public key, then I sign this message, so there is a cryptographic record that I call
I can call you anything. Unlike IRC, but like "real life", other people choose your name. So, in ssb, a name is just a mapping from a string to a cryptographic token (i.e. public key, and git-ssb repos also have names)
If I start using a new name for you, my old messages will still bear the name I used then, but it would still link to your public key.