Sometimes they have the same effect. For example, if taskC depends on taskA and taskB, then it does not matter whether taskB depends on taskA or mustRunAfter - when taskC starts, the order will be taskA, taskB, taskC.
But if taskC depends only on task B, then there is a difference. If taskB depends on taskA, then it is the same as above - taskA, taskB, taskC. If taskB is simply mustRunAfter taskA, then taskA does not start, and running taskC starts taskB, then taskC.
mustRunAfter really means that if taskA runs at all, then taskB should run after it.
source share