Unity handles this to a certain extent. But since you're building your own, you'll have to look at it at a deeper level.
This gets into what an animation is. If you are using a library, you may have to write your own instead.
To a certain extent, the armatures must be the same. Any change has potential to mess up the animation. For example, if an armature has an arm with upper, lower, and hand and then you combine the upper and lower, the fact that you dropped lower from the chain is going to mean the hand will be in a totally different place. There's basically no way dropping that joint out is going to not affect the animation. I suspect substantial scaling of individual parts rather than the entire model and armature could change things too.
Dropping things at the end of the chain is a lot less problematic. Taking all the fingers and animating the entire hand based on just the first finger is "workable". But this changes the vertex group assigned to that first finger from one finger to all the fingers. Or if you just drop all the finger animations the arms and palm animations should still mostly work. Dropping out eye animations is workable too.
Basically, the armature is just a bunch of matrices linked together in chains. The matrices are the joints of the bones.
But your models and animations are going to have to make some effort to work together. Different bone names won't work unless you map them. So, your model is expecting certain bone names (matrices assigned a name) and as long as you map something in the armature to what the model expects you should get it to work. But the less what you give it is what it expects, the more you will have problems.
For example, if the model expects a palm bone and a single finger bone along with a thumb bone, your animation may contain additional finger data, but you can just throw that away and get the expected result as long as everything else pretty much matches.
If it's merely a problem with bone names, write an importer that lets you map the names in the animation to the names in the model. You may get away with differing lengths. And you can probably get away with dropping out bones at the end of the chain. But radical changes may never be workable.
For a three joint spine you may be able to collapse a matrix to make it a two joint spine. You lose that animation, but at least you can maybe make it work. Or if your models support a 3 joint spine, then you could make one of the joints optional and basically lengthen the bone to combine two bones into one. Again, it won't be animated on that unused joint, but the animation doesn't contain that joint anyway, so not much lost. All this kind of means standardizing your models to support basically the same bones and then if that bone isn't included just treating two bones as if they are one.
Anyway, this sort of "unreliability" of 3D models is why I'm enrolled in a 3D modeling program to become a 3D modeler while continuing to build my engine. It's great if you can find the models you need at a somewhat reasonable price, but I always find it extremely difficult to find usable assets, especially along the lines of what I really want. Another advantage of learning modeling is that it helps you understand the entire process which helps in understanding how the code needs to support that process.