Think it's at least partly to do with core temperature. Swimming in cold water lowers core temperature, which raises appetite (if my only exercise was swimming I'd find it almost impossible to lose weight, especially open water swimming). Running raises my core temperature the most, followed by cycling (wind effect in cycling helps to mitigate the rise), hence running suppresses appetite the most. Jiggling the gut up and down is also a factor, as is sheer cal/hr burned (again, for me the calorie output is running>cycling>swimming).
Last factor is the mental one of how much it "feels" that weight is holding you back. For me, this is more of a factor with cycling, since I tend to do a lot more hills on the bike than the run, and I tend to do a lot more rides either in groups or at least on routes and at times when lots of other cyclists are around. So I get much more of a feel for how my pace on the flat compares to my pace up a hill relative to other cyclists, which emphasises any weight loss/gains. Conversely, for swimming it appears that excess weight makes almost no difference (might even be a slight benefit floating higher in the water). As far as I can see, the only incentive for a swimmer to lose weight is the fact that you do all of your training topless in front of other people...
Last factor is the mental one of how much it "feels" that weight is holding you back. For me, this is more of a factor with cycling, since I tend to do a lot more hills on the bike than the run, and I tend to do a lot more rides either in groups or at least on routes and at times when lots of other cyclists are around. So I get much more of a feel for how my pace on the flat compares to my pace up a hill relative to other cyclists, which emphasises any weight loss/gains. Conversely, for swimming it appears that excess weight makes almost no difference (might even be a slight benefit floating higher in the water). As far as I can see, the only incentive for a swimmer to lose weight is the fact that you do all of your training topless in front of other people...