Observe:
SeedRandom[1234];
dmp = DiscreteMarkovProcess[1,
Append[Normalize[#, Total] & /@ RandomInteger[{0, 100}, {29, 30}],
UnitVector[30, 30]]];
ClearSystemCache[];
Mean[FirstPassageTimeDistribution[dmp, {30}]] // AbsoluteTiming
ClearSystemCache[];
Mean[FirstPassageTimeDistribution[dmp, 30]] // AbsoluteTiming
Same result (as it should be) but on my machine (10.3 Win), the latter is well over an order of magnitude slower.
Genuinely puzzled by this behavior, wondering if there's some internal optimization used when conditioning on reaching the desired state...