An important distinction is that a partial remains a dynamic include, whereas an include is more like a #include in C, which inserts the content of the included file into the one that is doing the including.
What this means in practice is that if A includes B and you change B but you don't rebuild A, your change will not take effect. In contrast, with a partial you can change B without needing to have volt recompile A.
If you always flush the template cache after a change to any template then using includes is fine, and it's easy enough to do that automatically after deploying a change to a live environment, but it's more of a pain to do in development. I'd recommend to stick to partials for that reason.