Are 2 of them on Verizon and one isn't.
When sending photos or anything to another carrier the limit per item is different. So sending a 1.6mb gif for example when compressed on Verizon it will be possibly .9mb, but outside the compression could only got to .6mb which is more than allowed and it will fail.
Success on Verizon
Fail on Sprint with warning failed triangle
Success on AT&T
Fail on TMobile, no failed triangle, says sent but confirmed not received.
That makes no sense at all.
AT&T limit is 1MB incoming and outgoing seems doesn't matter if internal or not.
Sprint limit is 300kb from outside servers. So if they can't compress it far enough it doesn't get delivered.
T-Mobile is the same as Sprint
Internal(same carrier to same carrier) has higher limits, but as soon as it leaves their network the numbers are generally lower.
Try sending a photo and if it compresses and they get it then have them look at the details of the photo to see it's maximum size limit. Then check the gif size, and I am pretty sure any gif over 1.5mb in size never compresses well. Sometimes it removes frames to make it fit the limit when it does get received.