One first criteria is how long your customization last.
Imagine you have 20 minutes of customization because you do a lot of things, you install lots of packages across a slow network link, or on slow disks, it is a good idea to build a ready to use iso file in this case.
On the other hand, it you only have a small customization, it is better to use a kickstart where you just end with an ansible playbook (or something like that), which brings the customization stuff.
This way, you clearly see that things are splitted, one the one hand the kickstart to bootstrap any system with network, and on the other hand the customization, which is easily modified to suits your needs.
This also brings a very interesting advantage : you can run your playbook every day if you want, and you are sure that your customization is still as you wanted initially.
And if in the future you want to change something in your customization, just modify the playbook, and all your systems will be ok.
That's not the same with a system which have been deployed with an iso.