We often get the questions: "Why is the number of max users lower than the one set in the JMeter script?".
The max users figures is reported by JMeter during the test. The absolute majority of cases where max users is lower than the one set in the script is when the number of iterations is limited and/or duration is not set to run forever. In these cases, threads simply end before other threads start, keeping the number of concurrent threads lower than the maximum set in the script. For example, if you set 100 threads to start in a ramp up of 30 minutes and 20 end before the ramp up process is complete, JMeter will report only 80 (=100-20) threads as the concurrent threads. You can easily verify this by looking in the JTL file.
To make sure you have max concurrent users similar to what you have in the script, simply set the test to run for ever or at least for a duration that is longer than the ramp up period.