KDiff3 aligns lines that are the same or that differ only in whitespace. From line 9 upto the comment block at the end, every line in B is different than the ones in A and C.

You may say see that line 10 in A and 11 in B are more alike, but that is not something that kdiff3 attempts to detect. I have the feeling that would get costly performance wise rather quickly.

You can consider using manual diff alignments in a case like this.