I'd strongly suggest fixing it in both places - dealing with x and y separately is a great way to get a system that has biases either towards or against cardinal directions.
For another example, suppose you're taking a ship moving at 100,200 (actual speed ~223), and you want to reduce its speed to 100. Simply setting velocity to 100,100 will not only not reduce the speed to 100 (it'll actually be moving at ~141), it also changes the direction in which the ship is moving. The actual correct behavior would result in a velocity vector of roughly 45,89 - which is actually at speed ~100, and, just as important, going in the same direction as the initial vector.
(Note: values in above example rounded to nearest whole number for brevity.)
This is a slightly extreme example to make the point - but even if you're making small adjustments, you'll still get behavior that's slightly off. For your forced deceleration clamping, for example, you might actually see something like:
100,200, clamped to speed 200: your result: 100,200; accurate result: 89.4,178.9
100,200, clamped to speed 190: your result: 100,190; accurate result: 85.0,169.9
etc.