Contact app shows duplicate phone numbers

It has to do with what the SIM format allows. As far as I know, the only data that can be stored is a name - number pair. Wikipedia tries to explain it a bit in the article about SIMs, for want of a better source:

SMS messages and contacts
Most SIM cards will orthogonally store a number of SMS messages and phone book contacts. The contacts are stored in simple “name and number” pairs: entries containing multiple phone numbers and additional phone numbers will usually not be stored on the SIM card. When a user tries to copy such entries to a SIM the handset’s software will break them up into multiple entries, discarding any information that is not a phone number. The number of contacts and messages stored depends on the SIM; early models would store as few as five messages and 20 contacts while modern SIM cards can usually store over 250 contacts.[citation needed]

This limitation is why there’s long been a tendency to store contact data on the phone itself (most of the dumbphones I’ve had actually did this by default) and to allow synchronisation with external sources (now, the cloud, before that outlook was quite popular).
If this is the cause of the contact duplications, then it would be nice if the phone would have the option of selectively hiding the extra entries it creates, but I guess this becomes complicated with multiple SIMs (either at the same time, or after another). It would also mean storing data on the phone that users may assume is only on the SIM, which may be a security concern in some use cases.

thanks very much for this clarification, johannes. the fairphone is my first smartphone & i never thought too much before how/where contacts were saved on other phones. i understand now that i should just save things to the phone, & only save to the SIM card if i need it for a different phone.