The second lens for classifying a parallel machine: how do the processors share data? Either they all reach into one pool of memory (shared), or each keeps its own and they mail each other messages (distributed). This one choice decides your programming tool.
The trade-off in one line: shared memory is easy to program but hard to scale; distributed memory is harder to program but scales without limit.
This is exactly vertical scaling (one bigger box = shared) vs horizontal scaling (more boxes = distributed). Every modern supercomputer is hybrid — a cluster of shared-memory nodes, programmed with MPI + OpenMP + CUDA together.