К сожалению чистота архитиктуры часто ограничена неидеальностью реального мира. В общеп подхода к решению проблемы тут 2, и о них ты уже сам догадался:
1. null, или в твоем случае Optional. Тут зависит от языка и фреймворка, который ты используешь.
2. UUID. Value object UserId делать не обязательно, достаточно просто строки.
Ну а дальше выбирай, что тебе милее.