The cluster-autoscaler component does remove nodes with low utilization and Pods fitting onto other nodes, effectively defragging the cluster. There's just plenty of reasons for it to not drain a node (as per its FAQ[1]).
But it's highly configurable, so I wonder if the grandparent post just needed some configuration changes to suit their scenario better.
[1] https://github.com/kubernetes/autoscaler/blob/master/cluster...