Actually, this matter has been discussed several times in the forum. And I guess will continue to be discussed for long.
I can only offer my humble experience. At first, starting with the SE collection, I used a single matrix to host all the articulation I needed for an instrument. This matrix was based on the Basic one supplied by VSL, even if heavily modified to suit my taste.
With the Full libraries, this was no longer possible. I had to go with a single preset for each instrument. Inside the preset separate categories of articulations were collected into separate matrices. For example, I have a matrix for sustains, one for legatos, one for staccato, another for détachés/portatos, and then portamento/glissando, trills, performance repetitions, recorded repetitions…
Most matrices are organized by sub-categories: each column corresponding to type of timbre. I have vib, n.v., molto vib., more/less vib, sul pont, sul tasto, heavy/harsh, harmonics, heavies, lightes/mute basic, fx.
Matrices contain several rows. In some cases (sustains, legatos…) these are selected by playing speed. In some other cases by velocity (fp/sfz/sffz). In other cases, the matrix is a collection of options that are selected by MIDI messages (trill min2, maj2, min3, maj3…).
A huge amount of data. But by following a fixed map, I can easily create the basis of other instruments starting from a template, and can use a single Articulation Set/Expression Map to select the right articulation in each instrument.
Paolo