Having the same problem, was just about to post about this. It is important to note that fireballs can be hit when they morph back into the physical plane, but it's random chance and seems to be based on the player's position. Once in motion, though, they're fine, which presents a work-around: by simply providing a Motion tag, the fireball seems to stay constant in reality.
/summon minecraft:fireball ~ ~ ~ {direction:[0.0d,0.0d,0.0d],ExplosionPower:0,Motion:[0.0d,0.0d,0.0d]}
Affects 1.20.1