Technically, there is no difference. Both rescaling takes place on the GPU, both the same quality. The resize algorithm can also be set for a source by right-clicking that source->Scale filtering.
The two options get a meaning if you composite your output video from multiple sources. Imagine a streamer who streams a game and adds an overlay. The overlay is a prepared image that shows some kind of logo and additionally obscures part of the game that otherwise discloses private information. He prepares the overlay for the same resolution he plays the game with - at 1920x1080 to make it fit the game perfectly, but he wants to stream with 1280x720 for bandwidth reasons. For this case, he chooses a base resolution of 1920x1080 and output resolution of 1280x720.
But if you have one source only and are recording this one source only, it doesn't matter at which stage you do the rescaling. If you think you might perhaps later switch to 1920x1080 for recording for better quality, set canvas to 1920x1080 and output to 1280x720. So if you actually want to switch to the bigger resolution, you only need to update the output resolution. You don't need to change any source layout on the canvas in this case.
Most important thing is that you don't use the rescaling method that can be found in the encoder settings, because this rescaling is different - it's taking place on the CPU and wastes much CPU power.