When arrow is summoned with motion tag, it behaves as expected. But when the arrow's motion tag is updated with command blocks, the arrow's speed doesn't seem to change but then it disappears and appears where it has landed.

Arrows behave as expected with this command: /summon minecraft:arrow ~ ~1.5 ~

{Motion:[1.1,1.1,0.0],NoGravity:0b}

But the problem starts when we change the motion tag after summoning the arrow. Like this: Two command blocks that are activated at the same time.

1. command: /summon minecraft:arrow ~ ~1.5 ~

{Motion:[0.05,0.05,0.0],NoGravity:0b}

2. command: /data merge entity @e[type=minecraft:arrow,limit=1,sort=nearest]

{Motion:[1.1,1.1,0.0]}

When the NoGravity tag is set to 0, the arrow falls down and when NoGravity:1b, the arrow's speed doesn't seem to change.

I've attached a video file to demonstrate the situation. I also added some particles, which are executed from the arrows position with this command: /execute as @e[type=minecraft:arrow] at @s run particle minecraft:end_rod ~ ~-1 ~ 0 0 0 0.0001 1 force

The particles show that the arrow is flying through the air, but we just can't see it flying.