One or two bytes can easily multiply into one or two megs. Every resource counts. RESOURCE MANAGEMENT!
And all my sprites have their hitboxes set the same without using masks. A 16x32px hitbox with bbox_left at 0 and bbox_right at 15 is the same as a 16x32px hitbox with bbox_left at 9 and bbox_right at 24.
And sprite masks would be affected by the image_xscale bug too if you ever accidentally used image_xscale on it. The only reason nobody ever notices it when they use separate sprite masks is because they don't change the image_xscale for the mask. That doesn't mean the bug isn't there, it just means people are unnecessarily wasting resources because it seems easier for them to do that than to work with the bug. If you use custom collision detection, the bug is easily compensatable. If you use GM's built-in options, it's a gamebreaking bug that needs to be countered with sprite masks. GM8's sprites function exactly as a sprite mask would, they're just more susceptible to some bugs, but you have a lot more flexibility using each sprite's built-in bounding boxes as of GM8. I think you still need masks for isometric games, though. I haven't played with bounding boxes that much yet.