MyFor standard genealogy programs such as Gramps, my recommendation is to cite (i.e. link to) sources that contain multiple events and/or multiple relationships once for each person that is mentioned. Store it as a general source for the person. A census record is an example of a source that could be stored this way.
When you have a source pertaining to a specific event, such as a specific record for a birth, marriage, death, residence, occupation, etc., then store it as a source for that event for the person or family. If the record also mentions other people, also store it as a general source for those people.
The census is somewhat of a special case because some programs include a census event. If yours does, then you can store your census source reference with the census event for each person mentioned rather than as a general source for the person.
This way, one source reference is not mentioned more than once in any person or family and minimizes their repetition while maximizing their usefulness. Too many of the same source references everywhere makes it difficult to determine what is really pertinent.
If you want to record your sources to a more detailed level, e.g. for each assertion, you should probably get a program designed for evidence analysis, such as Evidentia, GenQuiry, Clooz or Lineascope.
The responses to this question have prompted me to add a more detailed blog post with my views.