A practical solution
My Icepool Python library has a more efficient pool algorithm:
from icepool import Die
num_scores = 12
t = Die([2,3,3,4,5,6])
ability = 3 @ t
pool = ability.pool(num_scores)
for i in range(num_scores):
output(pool[i])
You can run this script online here.
Mathematical notes
I have noted as you move to having more attributes, the array is scattered over more values and you end up with higher top score and lower low score than you would with a smaller pool.
The technical term for this is order statistics. For a continuous uniform distribution, the \$k = 1 \ldots n\$th highest out of \$n\$ scores will have a mean equal to
$$\frac{k}{n + 1}$$
i.e. evenly spaced. As \$n\$ increases, the most extreme values \$k = 1, n\$ will get closer and closer to the ends.
For a non-uniform distribution, the distribution of each of these order statistics will be "stretched" according to the inverse CDF. For a "bell-curve" shape like this one, this will tend to stretch out the ends more than the middle. While this stretching doesn't commute with taking the mean, and in RPGs we are typically dealing with discrete rather than continuous distributions, passing the mean through the inverse CDF often gives a decent estimate.
Algorithm notes
While AnyDice is not open-source, the API, performance characteristics, and developer statements imply it is based on enumerating all possible multisets that could come out of a pool. Unfortunately, for large dice, the number of possible multisets can grow quite quickly---in this case, \$\Theta \left( n^{12} \right)\$ where \$n\$ is the number of scores.
Icepool's algorithm is based on a generalization of the technique used in this answer by Ilmari Karonen. It combines the decomposition of a multinomial coefficients into a product of binomials, dynamic programming, and a few other tricks to compute the solution to many types of dice pool problems in polynomial time of reasonable order. In this case, the running time is \$\Theta \left( n^2 \right)\$, times an extra cost of \$\text{O} \left( n^{1.58} \right)\$ if we are seeking an exact fraction.
If you would like to know more, you can read my paper on the subject:
@inproceedings{liu2022icepool,
title={Icepool: Efficient Computation of Dice Pool Probabilities},
author={Albert Julius Liu},
booktitle={Eighteenth AAAI Conference on Artificial Intelligence and Interactive Digital Entertainment},
volume={18},
number={1},
pages={258-265},
year={2022},
month={Oct.},
eventdate={2022-10-24/2022-10-28},
venue={Pomona, California},
url={https://ojs.aaai.org/index.php/AIIDE/article/view/21971},
doi={10.1609/aiide.v18i1.21971}
}