If my understanding is correct, the term to "program a key" is misleading as you program a device in the car rather than the key.
I'm primarily talking about transponders for immobilizers. Remote controls might be different, though I don't see a reason why the principles should be different.
All car key transponders that I have read about are passive and "dumb", and all that one of these can do is transmit the ID that it was given at birth. When you buy a new key with transponder, and you want a car to accept that transponder, you need to tell the car that it should accept the key with this specific ID.
Even if you imagine a car key with a much more complex transponder that does a digital signature, similar to the chips in credit cards, you will still need to instruct the car to accept that digital signature, and I see no reason to make any change to anything in the key transponder.
So what you need to change is some settings in the car electronics, not anything in the key. Therefore "programming the key" is very misleading.
Wouldn't a better term be: 'To pair a transponder to the vehicle'
The term "cloning a key" refers to making a transponder, that responds with exactly the same ID as an existing transponder. In that case you obviously change something in that key, but in almost every tutorial I have watched, this is not what they mean, when they talk about "programming a key". Also cloning of keys seems like a much less used practice than "programming" (ie adding new keys to the car).
So my questions are: Do we actually program the key or the vehicle?
Why isn't it more common to clone a key rather than pairing it to the car?
What types of transponder are there and how do we program them?