I do NOT agree that all enrolment methods should have size limits. The enrolment on course completion is a good sample, you promise the user if they complete a course, they will be enrolled. If you add a maximum number of users, you only generate frustration and hundreds of emails of students who think they have the right to be enrolled.
The same with payments, if you promise your students that they will be enrolled when they pay, you make a commitment to those users. What happens if 2 users pay on the same moment when there is only one place available? You open a box of Pandora with refunds - complaints - and most of all: frustrated students.
Sometimes I'm forced using the key enrolment feature with a maximum of participants. Again and again when the maximum number of users is reached, I receive emails from students who want access. In 99% of the cases, I make an exception, give the user access, and promise myself never to make the mistake again...
R