The purpose of
MaxDegreeOfParallelism
is only to restrict how many threads can be used in maximum. It doesn't meant that the system will use s many threads.
The decision how many threads are used is done by the
TaskScheduler[
^]. You can either stick with the default scheduler or create your own, but from my point of view the standard scheduler is usually making good decisions.