It is a good question. The reason is as a user you want to have 100% flexibility but as the design system developer it could be a challenge for you to maintain so much. From my experience, keep it to a few but a few doesn't mean that missing the flexibility.
For moving to a new file, the rule one can follow is if by changing the one variant we need to change other varients too then move to a new file.