It obviously is just checking if one of the geoms is empty, then returns the other. This is not the behaviour I expected, and it rules out some of the result types I thought were possible. Maybe something to ask the JTS guys about.