I am confused - why does the "Add Only" option on an Import Definition require a primary key? This doesn't make much sense to me. The nature of this data extension in question doesn't necessitate the need for primary keys. The client will be sending incremental delta files to add to this data extension. Please, someone explain this!! :)
The functionality of "Add Only" import type is to add new records. For instance your DE contains 4 records already and now you are importing a file with 6 records(that file contains those 4 already existing records and 2 new records that you need to add in your DE). Now if the DE does not have a primary key, it will add duplicate records and you will end up having 10 records, but you needed just 2 newly added.
You can verify this by creating a DE containing a primary key. Create a record in that. Now if you have a file containing that record and few other records and if you try to import that file, it will insert only the new data and not that existing row for "Add only" import type.
SO for this, "Add Only" and "Add and Update Only" requires a DE to have primary key as many a times customers send updated files containing old and newly added rows where we want only newly added rows in our DE.
But to cater to the other cases where a new file is given by customer (example: date wise data), in those cases we can use "Overwrite" option.