This is actually a limitation of how MongoDB's map reduce works at the moment. For the time being, MongoDB still has DB level locking and map reduce jobs in particular take out both a read and write lock unless the job is explicitly non-atomic.
You can read more about how to make the mapReduce command non-atomic here (caveat: this is only available in MongoDB v2.2+).
If nonAtomic is true, the post-processing step will prevent MongoDB from locking the database; however, other clients will be able to read intermediate states of the output collection. Otherwise the map reduce operation must lock the database during post-processing.
MongoDB's aggregation framework is generally a bit more performant than map reduce. However, it is fairly new and it can't quite do all the same things just yet. If you can accomplish the same task via the aggregation framework I'd recommend using that instead.
For your reference, here's a list of operation types and what kinds of locks each operation requires:
http://docs.mongodb.org/manual/faq/concurrency/#which-operations-lock-the-database