Возможно, я ошибаюсь, но я думаю, что вы хотите здесь:
$posts2 = Path::with(['pathtags' => function ($q) use ($TagArray) {
$q->with(['Tasks'=>function($q) use ($TagArray) {
$q->has('tasktags', '=' , 2)
->whereHas('tasktags', function ($query) use ($TagArray) {
$q->whereIn('name', $TagArray);
})->with('tasktags');
}]);
}])->first();
, поэтому вы выбираете только пути, в которых есть метки задач с заданными именами.