TL;DR We are forced to use distutils because setuptools has broken symlink processing and this causes distutils.errors.DistutilsClassError: command class <class '__main__.SDistCommand'> must subclass Command.
It works with setuptools<48 and the changelog doesn't document any breaking behaviors for this version.
Repro:
$ git clone https://github.com/ansible/ansible.git
$ cd ansible
$ pip install -U 'setuptools>=48'
$ python setup.py sdist
(tried under Python 3.8)
Ref: ansible/ansible#70456