"Multithreaded code is a particular kind of parallelism"
No.
Parallelism implies that there are multiple CPUs and/or multiple cores at work (or in older use of "parallelism", at least some instructions that are parallelized).
Multithreading doesn't imply that at all: you can have a multi-threaded program (like, say, a Java program using multiple threads + its GC thread, EDT thread, etc.) running on a single-machine using on CPU which has a single core and which doesn't do any kind of parallelism.
To me you're totally wrong in saying that multithreaded code is a particular kind of parallelism.
You are correct, I over-simplified. Multithreading is a way of implementing parallelism, but it will not always lead to parallelism. Multithreading always implies concurrency, but only yields parallelism if the underlying hardware allows it. (Concurrency allows for time-sharing the processor so they are not actually running simultaneously; parallelism means they are running simultaneously.)
However, I was not primarily concerned with this distinction, but with the distinction between obtaining parallelism through multithreading, versus parallelism through message passing. Multithreading implies that parallel threads will communicate implicitly through shared memory, which does not scale past a single machine.