Creating a temp array vs passing one in Mergesort
Memory management would be the only reason. In the second approach, you need to create $2n$ arrays total size of about $2n\log{n}$. If it is happening with a large $n$ or very small computing unit, you will face serious performance issues. 
Finally, you have to be careful with memory when you work with recursive functions. It easily cause memory overflow.