For DataSource Servlet (/bin/dropdownList) Implementation you can refer to below articles:
https://redquark.org/aem/day-17-granite-datasources/
http://www.sgaemsolutions.com/2019/01/dynamically-populate-drop-down-values.html
Approach II:
You can create a listener for the adding the variation in a fixed list maintained at a fixed path e.g. /etc/variationList or /var/variationList. The dataSource will read the node and display the list.
I have not tried but thinking you can fix the CF folder parent path, if there are little variation of the variation List based on the folder path of the CFs. And this property can be fetched from one of the node property and this way it will be more dynamic as well.
Hope this helps
Thanks