When in doubt, remember to read the documentation for the methods you're using:
relativeTo is left out or set to Space.Self the movement is applied relative to the transform's local axes.
So you're getting a velocity vector in world space, and applying it as a local-space translation. This will rotate the vector by your local orientation.
It sounds like your local orientation is twisted +- 90 degrees from world space. So the rigid body
velocity tries to move you to the world's right, and
transform.Translate tries you to the object's right (which points up or down in the world), resulting in a net movement that's diagonal.
Really, you should not have
transform.Translate here at all. If your object has a rigid body (2D or 3D), you should consider setting
Rotate() to be off-limits. Moving a physics object via its transform makes your code fight with the physics engine for control, leading to all kinds of unwanted outcomes as you've already observed. Use velocity, angular velocity, AddForce, MovePosition or MoveRotation instead to keep your movement in the physics engine's control.