I also faced this problem last week. I use .NET 8 and EntityFrameworkCore 8. After re-reading the official document. I found that it's related to the NRT feature. Here is the document if someone needed.
If nullable reference types are disabled, all properties with .NET reference types are configured as optional by convention (for example, string).
If nullable reference types are enabled, properties will be configured based on the C# nullability of their .NET type: string? will be configured as optional, but string will be configured as required.