It depends. What stream contents or recording do you intend to produce? This is the starting point of your planning. What should the output resolution be? And do I perhaps intend to change the output resolution later?
With games, it's usually best to set canvas to the same resolution as the game and output resolution to the resolution you intend to stream with or record.
If you want to stream some camera covering the whole screen as primary source, it's best to set the camera to the lowest resolution possible, because this results in best quality with the given resolution. You waste resources if you capture a camera at high resolution and downscale the video within OBS. The lowest resolution possible for a camera covering the full video space is the intended output resolution, so in this case you set everything the same: output, canvas, camera. Try to avoid downscaling a camera image, try to capture it the same or slightly above the intended resolution you want the camera appear in the output video.