We have both the co-located and load balancer topologies deployed in production.
It's simpler to have nsqd co-located with the producer. If you don't have to set up LTM/monitoring it's less operational overhead to just publish to localhost. It's also less network overhead, if that's a concern. I believe these are some of the reasons for the recommendation, though it depends on your use case and how segmented your organization is.
Sometimes we'd rather install nsqd on different boxes than the message publishers, or use an existing cluster for new publishers, usually to keep a cluster's responsibilities clean. In this cases we either round robin with a well-known set of nsqd instances or use a VIP.
Both approaches work well for us.