Seat shifting is done by robots which don't necessarily keep pax on the same PNR together upon re-assignment (cf. my recent post in the BA seat shifters thread). I can't imagine the logarithm used, but it's not a very sophisticated robot, obviously. But coders cost money, so I wouldn't expect grand evolutions in the near term.
The usual FT solution is to call BA, say you've been seat-shifted, could they please delete your seat assignments, and (having the MMB seat map before you on your computer) ask to be reassigned accordingly.
Yes this always happens and BAEC always sort it out, sometimes they disingenuously say " I don't know why this happens. I play along, it adds to the mystery"