I'm not a 2D animator but since noone answered I'll try to help with my limited knowledge.
The sample you linked is most likely vectorial animation, where you create separate shapes and add 2D movement to them by sliding and stretching them accordingly, as you notice the characters never change angles they just slide.
Basically you break a static character into individual parts, rig their layers on top of eachother then apply movement to each layer accordingly.
Meaning you could use almost any softwares that allows you to animate separate layers into keyframes to achieve this effect, even full on 3D softwares work if you know what you are doing, so the software wouldn't matter as much as you understanding the core of how this effect works and then being creative with it.