This behavior actually makes perfect sense not only from performance point of view. Think about it that way:
When you use observe
method, you want to be notified of all changes that happen to the collection (whether on the server or in minimongo). So each of the callbacks you receive is a single instance of modification of the collection. When you change order of objects by moving one of them to another place, you change the collection once, so you want to receive just one callback for this event.
You don't want to be notified 42 times about a single event!
I think the easiest way to multiply that notification for all moved objects is to loop over them manually within the callback. When an item moves from position A to position B, you know that all objects that were between A and B have also been shifted. So if you need to adjust each of them, simply do this in loop that goes from A to B over the whole list.