Разница заключается в том, что с внешним ключом вы не сможете вставить в таблицу данные, отсутствующие у связующей таблице в колонке с внешним ключом, а так же не сможете удалить эту запись если данный внешний ключ используется в связующей таблице.
Если вы укажете это в модели, то это будет то же самое, что и без внешнего ключа, но как я сказал выше, вы не будете застрахованы от удаления и null вставок. А так же для foreign можно дописать еще и стратегию, например
$table->foreign('user_id')->references('id')->on('users')-onDelete('cascade');
Что будет означать, что при удалении пользователя, записи из этой таблицы, которые содержат внешний ключ, ссылающийся на пользователя, будет удален.