This occurs only when the Start Date is the same date as the End Date. (i.e., if you opt out of the email on the same day as the code is added to your record) The system assumes the solicit code was added incorrectly and removes it from the record if the Start Date and End Date match.
This issue originally surfaced when an Add Solicit Code global change was run and immediately followed up by an email message that resulted in opt outs. To avoid removal of the solicit codes when the opt-out occurs in this scenario, ensure that the global change adds the solicit code with a start date prior to the date the mailing will be sent. For example, if you will send an email on November 15th, run the Add Solicit Code global change to set the Start Date of the solicit code to November 14th.