I hate it when sprites will not do what I tell them lol!
OK so I set up a simple test and the reason it overshoots and wobbles is because of the acceleration and deceleration formula 8 directions uses. I played with those numbers and could get it close but not perfect and you want perfect apparently and wobbling is not an option.
So here is is a simple trick I use all the time using a blank sprite to stop a character sprite exactly where I want them.
You need a clone of your player sprite with no behaviors and place it where you want your player sprite to stop (in the middle for your game).
Here are the events:
I have the player sprite set at 400 speed, 400 acceleration and 0 deceleration. That 0 deceleration keeps the sprite moving back to the center.
I set the speed to 600 when I release a direction key that way the player goes back faster than it moved away from center and when it overlaps the clone sprite it stops perfectly on center.
Make the clone invisible and you can use that to have your player return to a specific spot anywhere.
EDIT: I added in a Start Ignoring Input command to keep your user from clicking keys in rapid fashion that throws off the direction the player is traveling.
This may be a problem if your player is shooting and you are using arrow keys to shoot. You may need to use a different key for shooting.