Exchange robots doesn’t convert speeds on program statements so in that regards it’s not good for speed comparison purposes. The problem specifically is in the LIN motions. PTP motions set speed as percentage so when switching to slower robot then PTP should result in slower motion and there’s no problem. But LIN motion speed is set as cartesian speed. Then when you switch robot the MaxSpeed property value stays the same. Now your slower robot has probably slower joints and when controller tries to reach the MaxSpeed on LIN motion then those joint speed limits are exceeded and you get that error. So you would have to manually (or with python add-on) change those MaxSpeed values to some smaller values.
The way VC controller works with LIN speed is that it only limits speed on cartesian space. Joint speeds are only monitored and if there’s a limit break then you can print an error or stop the sim. This is similar to what older real controllers work. More sophisticated real controllers and path planners (like ABB IRC5 or Kuka KRC for spline motions) can combine different factors for limiting motion speed. So for LIN motion both cartesian speed limit and joint speed limits are used to control motion speed. VC controller at the moment cannot do this but like I said they only monitor joint speeds for LIN motion. And this problem of running into errors when you simulate high programmed speed inherited from another robot is partly caused by this limitation in VC robot controller.