I do not know if it affects licensing, but assigning more than one core to a worker is certainly possible.
More cores per worker enables automatically parallelization of a number of mathematical operations.
For example if you have A+B where A and B are matrices, then automatic parallelization will divide the arrays into as many sections as there are available cores, and then the + operation would be carried out by section, one section per core.
Not all operations can be automatically run in parallel. For example if you had a loop,
for K = 1 : 1e6; C(K) = A(K) + B(K); end
then it might have to be run in serial. However, some (undefined) coding structures can be automatically detected and run in parallel when they look like they would run in serial.
If you are operating on "small" arrays, then automatic parallelization might not kick in. Automatic parallelization requires some overhead to set up, and MATLAB is smart enough to estimate whether the amount of work that would be saved by running in parallel would make it worthwhile to run in parallel. As a rough estimate, historically the breakpoint for simple operations like A+B was around 10000 elements, with smaller arrays being handled on a single core.
Some mathematical library calls such as svd() and eig() automatically use multiple cores when they are available.
Generally speaking, the more your code looks like mathematical operations on large arrays, the more likely it is that automatic parallelization will be beneficial; the more your code looks like loops operating on one scalar at a time, the less likely it is that automatic parallelization will do any good.