When dedicated server process model should be used instead of shared process model? It looks like Oracle shared server process model is better than dedicated server process model. In a shared server configuration, client user processes connect to a dispatcher and it can support multiple client connections concurrently (source). Also, shared server can be configured for connection pooling and session multiplexing, so all these things should bring a huge performance boost. So, with these advantages, are there any cases when dedicated server process model should be used instead?
1) One Tom Kyte maintains that with shared server, the only performance that will surely increase is processing of CONNECTs. For the rest of statements, shared server is inherently a bit slower, unless it happens that pooling/multiplexing is sufficient to maintain advantage.

2) Dedicated is simpler - it has less components. Since much of administrator's job is investigating strange behaviors, tracing, analyzing... simpler means better.

3) Most importantly, everybody uses dedicated, and a best approach in case of any "enterprise-level" software is to take a path more traveled by - my personal opinion. A side-effect would be when contacting Oracle support with problems, you may receive more often the advice to "try again using dedicated server instead" than "well, why don't you try it using shared server instead". So it's one less thing to discuss with those beautiful people.