Now that balancing is based on data size, chunks are by default of heterogeneous sizes and it is not needed anymore to over-split them (better to keep the routing table as small as possible).
When a migration fails because of a frequent shard key, the splitOrMarkJumbo method is called and currently takes care of dividing the chunk based on the list of split points [potentially multiple].
This method should be simplified in order to split only on the first available point because it is only needed to mark as jumbo the chunk containing the frequent shard key. This can be achieved by passing a vector only containing the first split point as argument to the splitChunkAtMultiplePoints function.