The database creates the profile, not the client
A user without a profile row is a bug waiting in every query that joins them. Creating the profile in a trigger on signup — in the same transaction as the account — makes that state impossible, rather than something the client has to remember to prevent.