First of all, you should write where have you found this question.
Anyway:
when you are using setHeader you are deleting the old contents of the header, and you are puting into it a new value.
when you are using addHeader you are NOT deleting old contents, you just add a new value to this header.
So the real question is:
If you have a Header with multiple values (as occurs after multiple calls to addHeader),
does setHeader replace ALL the existing values.