Assumed that the code that I had locally was the same as the one giving problems in production. From the symptom of the problem I almost immediately suspected what the problem was (a column not specified in a joiner transformation in Informatica) but my own code said that the suspect column was included. So, after many hours of picking the bones out of a 500Mb session log file, I checked what the file had to say about the join specification.
Ping! It was wrong. Solution appiled in production and problem went away.
Interestingly enough though, I also fixed a different problem that would have caused the same symptom had we hit particular data combinations. That must have been the silver lining on the cloud of a mostly-wasted day.