Did you figure this out?
I believe you're running into behavior I have also seen. Consider the following scenario.
In an otherwise empty buffer, enter the following three non-blank lines (blanks here for readability):
Test1String
TEST2STRING
Test
Run the following tests, each with the cursor at the end of the third line. (It does not matter if there is a newline after the third line.)
Firstly, invoke M-/ and what you will get is Test2string.
Secondly, delete the third line and replace it with "TEST1" before invoking M-/ and what you will get is TEST1STRING.
Thirdly, delete the third line and replace it with "test2" before invoking M-/ and what you will get is test2string.
I don't what this case-matching behavior is called, but it catches me occasionally too....
Cheers,
Mark