During a moveChunk we ensure all indexes from the source shard. This makes sense if the collection is new or already has all the indexes (since it is a no-op) but in the case of different indexes a movechunk can degrade performance and block other operations because of the "new" indexes.
It is therefore an improvement to make the operation fail because of the missing index(es) rather than add load and affect performance and availability of the destination shard.
See https://github.com/mongodb/mongo/blob/v2.4/src/mongo/s/d_migrate.cpp#L1660 for the 2.4.x (currently the same in 2.5.x) behavior.
- is related to
DOCS-4316 Warn re: moveChunk failure if documents exist on target and required index does not exist
- related to
SERVER-16316 Remove unsupported behavior in shard3.js