既存のバックアップ(*.gz または *.zst)を処理できるようにし、処理を簡素化するより良いアプローチとしては、tar の自動検出機能を使用することが考えられます。
tar --auto-compress -c -f ../file.tar.gz .
tar --auto-compress -c -f ../file.tar.zst .
もちろん、より重要なのは展開側です。ここでは、どのようなファイルが現れるか事前にわからない可能性があります。
現在、Ruby のコードは tar 自体が処理できることを多数行っているようです。複雑化するのではなく、これを簡素化できることを願っています。