There are problems with both offset and invisible detectors in this case... using offset would require several conditions to check all sides of the ball, which means extra code.
And using an offset in that manner, as well as using a detector sprite, would mean that the detection area could overlap more than one brick at once, thus destroying two bricks with one hit, which would look strange.
I agree that each movement-type behavior that interacts with solids should have some sort of collision condition built into it that you could use instead of the regular "On collision" condition. Either that, or be able to utilize the regular "On collision" somehow.