The typical reason that people typically use pre-specified elliptic curves instead of generating them is efficiency. It isn't very difficult to generate an elliptic curve, but it is generally difficult to generate a secure elliptic curve, and moreover, it's relatively difficult to convince the other party that the curve is secure over the limited bandwidth of the protocol. The SafeCurves website explains many of the attributes that are desirable in a curve, and explains part of the decisions of Curve25519.
Most of the well-known elliptic curves are also specifically chosen for efficiency, using a prime or a form that is designed to be as efficient as possible. For example, using curves with a fixed prime near a power of two makes specific operations much, much faster, and implementations are typically hard-coded to take advantage of specific primes.
Moreover, using pre-specified elliptic curves means that it's much easier to write constant-time implementations. This is very important in online protocols like TLS where non-constant time implementations can be demonstrated to be exploitable. It is possible to write generic constant-time implementations of elliptic curves, but it's complex, and people don't practically do it.
It is certainly possible to use fixed groups in non-EC Diffie-Hellman; TLS does this, and SSH does it as well. As long as a sufficiently large group of the proper form is chosen, that is secure. Using a fixed group is also more efficient in terms of protocol bandwidth because the parameters don't need to be sent.
It is also possible to generate random secure finite field groups and this is far faster than generating secure elliptic curves, but it's still slow enough that typically people precompute the parameters once and then use them for a period of time.
As for RSA, reusing the parameters isn't usually secure. Additionally, for efficiency reasons, the private key often includes $p$ and $q$, which would immediately compromise the private key of anyone sharing $N$. Even if sharing $N$ didn't have security problems, because $p$ and $q$ couldn't be exposed, this would be much less efficient than generating new parameters per user.