I have been migrating our CI to GH workflow in past month or so. My impression is that you will quickly realize when jobs have to run in the same workflow. When you try to split jobs in different workflows, you will either hit a wall where you just can’t achieve what you want due to some limitation on GH or you will start to copy/paste substantial amount of yaml between workflows.
Anything that requires synchronization between jobs will have to be in the same workflow. If you just want to run Job B after Job A succeed, you can do it in either one workflow or two (by dispatching events). But if you want Job C to run after Job A and B succeeded, you will only be able to do it with jobs in the same workflow.
Sometimes you will be forced to run separate workflows. For example, if people open PRs from forks, your workflows running on the PRs will not have access to any of your secrets. In this case, you will have to split the jobs that require credentials from the ones that require to run on the code from your PR.
This is only few examples but you shouldn’t worry too much about the separation of your workflows in my opinion. The system, to me, is not so flexible that you can get very far in the wrong direction. You will hit limitations quickly enough and it will be obvious that it isn’t the way to go.