Третий вариант ближе к SQL структуре по архитектурному плану, проще будет мигрировать на SQL базу, если вдруг решитесь отказаться от монги.
Конкретно с Mongo не работал, лишь читал о ней, так что могу порекомендовать при выборе метода отталкиваться от того, насколько затратно будет доставать данные по юзеру из неё.
Например, если просто дёргать по id типа
DB::table('...')->where('id', $id)->first()
, то норм, а если придётся получать коллекцию и перебирать её для поиска значения а-ля
$items = DB::table('...')->get();
$index->search(fn ($item) => $item->id === $id);
$item = $items->get($index);
То нах такое решение.
Исходя из этого, выбери то, которое будет проще поддерживать и проще реализовывать.