The MSPEED is sampled per servo cycle. So typically it is number of counts per millisecond. At slow speed there can be less than one count per msec. So it goes 0, then 1 then 0 etc. That is then multiplied by UNITS so the effect seems to be amplified.
If you want an average mspeed value to display then either start a timer and read MPOS, then read it again at the end of the time and calculate the speed, or use MSPEEDF and set the appropriate MSPEED_FILTER value. 1 is no filtering and 0.01 would be a long time-constant filter.
If the encoder is to be used as a master for following by other axes, then it is quite important to have an encoder with the same or higher number of counts per turn and the motors do. Then it will follow OK. If using gearboxes then those need to be taken into account too.