Catch weight below both fighters best weight is a little unusual. My answer is Hagler would win on the scales, Ward isn't making 158lbs.
1) Ward would be half dead from the weight cut 2) Ward wouldn't take the fight at 158 given that he refused to face GGG at 168 3) Hagler would clobber him
that's hardly a catchweight! hagler trained down to 160lbs for titles, but was a 170 odd lb man, Ward is a 180/90 lb man - Catchweights for these two, would be agreed about 170 - 175lbs. 158 is not a Catchweight for these two, that would be a MW Title weight needed requirement.
Confusing weight question as Ward never fought lower than 164 in his entire career. Hagler would actually probably come in at that weight anyway, Hagler walked in at that weight a number of times. If they met between 160-168 (164 perhaps) I don't think Ward beats Hagler. Hagler's right hand is better than Ward's left hand, he can outbox and close the distance and Hagler was legendary when deciding to go on the front foot. Hagler never fought at SMW but he beat a number of guys who were the size of SMWs so it's not a stretch to see him doing this to Ward.
Since at the time Hagler was boxing there was not as much dehydration as it is today; Hagler would be more suited to fight at 158lbs than 160lbs. Hagler weighed in at 158.5lbs for the fight with Leonard, and 157.5lbs for the fight with Duran. As an aside, I would favor Hagler to beat Ward at 160lbs as well. Up to 158lbs is just an even bigger favorite. Hagler UD. Hagler is a legendary ATG middleweight boxer after all.