membership source field not displaying in reports or exports sometimes
The fact that the record displays correctly on save suggests that there's a difference between how correct and incorrect values are recorded in the MySQL database.  I've seen this happen on multi-select custom fields when you import values with a comma rather than a value separator.  The field LOOKS ok, but it's not stored correctly - but on save, the form corrects the data.

If you view the underlying MySQL table in a tool that supports showing hidden characters, I'm guessing you'll find one missing (or present) in the incorrect records.

UPDATE: To see if you can view hidden characters, try inserting one into the database.  E.g.:
INSERT INTO civicrm_worldregion (name) SELECT CONCAT('a', UNHEX(01), 'b');


If I view that in the MySQL CLI client, I can't see it:

mysql&gt; SELECT name FROM civicrm_worldregion ORDER BY id DESC LIMIT 1;
+------+
| name |
+------+
| ab  |
+------+
1 row in set (0.00 sec)


I also can't see it from my command line:

~/ » mysql temp -e 'SELECT name FROM civicrm_worldregion ORDER BY id DESC LIMIT 1'
+------+
| name |
+------+
| ab  |
+------+


However, if I pipe to vim then it appears as:

name
c^Ab


That ^A is in blue, which indicates it's not actually "caret then A" but rather "control character 0x01".