$fillable и $guarded в модели отвечают за разный функционал. Сам не гуру но из практики знаю что первая переменная указывает на поля которые необходимы для создания записи в базу через ModelName::create();
Другими словами это набор столбоцов у которых нет значения по умолчанию.
$guarded - здесь перечисляются поля которые не следует светить в ответах с сервера. Например в контролере
$user = User::find(1);
return response()->json($user);
в ответ уйдет абсолютно вся инфа из базы, включая пароль и тд. Но если в модели присутствует
$guarded = ['password'];
то в ответе поля с паролем уже не будет.
Возможно есть ещё нюансы, или моё мнение ошибочно. С ларой знаком лишь пару недель