Your question is slightly opinion-based. However, I will try to figure out the topic somehow by presenting both solutions. First, an excerpt from the documentation. There you can find a paragraph when to use multiple namespaces:
Namespaces are intended for use in environments with many users spread across multiple teams, or projects. For clusters with a few to tens of users, you should not need to create or think about namespaces at all. Start using namespaces when you need the features they provide.
Namespaces provide a scope for names. Names of resources need to be unique within a namespace, but not across namespaces. Namespaces cannot be nested inside one another and each Kubernetes resource can only be in one namespace.
Namespaces are a way to divide cluster resources between multiple users (via resource quota).
It is not necessary to use multiple namespaces to separate slightly different resources, such as different versions of the same software: use labels to distinguish resources within the same namespace.
Based on this documentation, in your case, the best solution will be to create one namespace and many deployments. This will allow you to avoid problems like this:
For example an argo workflow launched on argo namespace can't use a secret stored from postgresql namespace.
Technically, you can create the same thing using multiple namespaces. However, the point of namespaces is to isolate, so it doesn't seem like a good idea in your situation. You can read very good topic about Service located in another namespace.