There’s no need since they are random, so you might as well generate them on your application servers which are easier to scale, to offload the write database.
IMO marking the row as generated makes its intent clearer. It also means less code - no generating UUIDs, shorter queries = more robust.
For my workloads at least, I think it's worth the tradeoff of forcing Postgres to muster 15 random bytes.