Could be a number of reasons. Maybe your stance is off and your stroking arm can’t come through cause your body’s in the way so you feel like you have to move to make room for it.
Maybe your forearm on your grip hand is not perpendicular to the floor when your tip is at CB so you’re stroke is either overextended causing you to have a Johnny(who’s Johnny) Archer break stroke on every shot or just the opposite whereas your stroke is almost complete before your tip even reaches the CB causing you to push through to complete it. Maybe your bridge hand is too far from CB causing you to feel like you have to reach.
Fix all these problems first, get your bridge hand a comfortable distance from CB, there’s a way to find out exactly where that is, but for now just a comfortable sight picture for you, make sure you’re in a comfortable stance with your body out of the way of your cue so it can come through. Now you need a defined “finish”, mine is on my chest, where your grip hand will hit after you’ve completed your stroke.
Go to table with no balls, close your eyes after everything looks good and just stroke focusing on hitting your chest with your grip hand on each stroke. You won’t stand up because your chest will move and you won’t hit the same spot so you’ll automatically stay down.
Once you’re comfortable with this have someone help you by putting a ball on the spot and shooting it in one of the far corners with your grip hand going to finish, don’t move until your helper puts another ball on the spot and repeat, you’re building muscle memory fast. Your helper can also correct your grip hand to perpendicular without you having to move. Shoot the ball in corner varying your speed but always hitting finish.
Later on even if you decide to drop your elbow, which is ok after you’ve learned to stay down you will still have a solid base and you won’t move.
When you get in a match leave all of this on the practice table and only concentrate on making the ball and getting to the next one