Re-using includes when the object type changes (entry vs block) - what is the best method?
From what I can see here, the only important object you care about in the include file is the video object. So what you could do is simply passing the video field in parameter directly, using, for the entry:

{% include '_includes/matrix/video' with { video : entry.video } only %}


...and for the matrix block:

{% include '_includes/matrix/video' with { video : block.video } only %}


But then you would need to explicitly call each matrix block type with associated parameters.

I would in any case add the "only" keyword after the parameters, as it guarantees that your template will be isolated from other variables already defined in the main template.