Braking a small, high-speed DC motor
When the motor is spinning it generates a voltage proportional to its rotational speed (almost equal to the supply voltage when running free). Then when you apply a short the current is determined by that voltage and the motor's internal resistance. Torque is proportional to current, so initially you get a braking force equal to the stall torque. However as the motor slows down it produces less voltage, so the current and torque reduces (down to zero when it stops). If the 'short' is not a low resistance compared to the motor's internal resistance then it will have even less braking force. 

Any inertia in the drive chain will make it run on past the point where you try to stop. A motor in a gearbox has a lot of inertia due to the high rotational speed of the armature and first gear stages. It will never stop instantly, just like it won't go from stationary to full speed instantly when powered up.

Motors such as the RF300 and RF370 typically have high internal resistance and low torque, relying on the gearbox to provide sufficient output torque. They also have heavy iron-cored armatures which increase inertia. Swapping out the motor for a more powerful coreless type with low internal resistance would improve the braking speed. Unfortunately good coreless motors tend to be expensive, and often require matching (expensive!) gearboxes.  

You can stop faster by applying reverse voltage, but be careful because that can cause the transistor bridge to 'shoot-through' if you don't stop and wait for the inductive back-emf to die down before reversing. Also the peak current will be twice as high as normal.

Even with reverse voltage applied it will take some time to stop. To compensate for this you must start braking the motor before the robot gets to the position you want. How much before depends on the amount of inertia in the system, which may vary depending on what the robot is doing.