Software con opinión
En el desarrollo de software tener muchas opciones entre las que elegir puede ser algo positivo, sin embargo a veces tener demasiadas opciones también puede ser un problema.
Pensemos, por ejemplo, en los frameworks de javascript. Existen docenas de ellos: jQuery, Prototype, Yahoo UI, Dojo, ExtJs, GWT, MooTools… Todos son buenos y elegir la mejor opción es algo muy complicado: para encontrarla deberíamos pasar un tiempo considerable evaluando cada uno de ellos, sus ventajas y sus inconvenientes, y como solucionan los problemas que tenemos.
Pero, ¿merece la pena tanto esfuerzo? Probablemente no. Aunque haya un framework que sea inherentemente mejor que los demás, vamos a perder más tiempo buscándolo y evaluando posibles opciones, que si utilizásemos directamente el segundo o el tercer mejor framework, porque, entre los más conocidos todos son suficientemente buenos.
En mi opinión, la mejor solución para este problema es la que toma Ruby on Rails. Rails es Opinionated Software, software con opinión. Cuando creamos una aplicación nueva con Rails, la aplicación viene ya “con las pilas incluidas”: ya tiene un framework javascript -prototype- una librería de testing, librería para fixtures , un motor de plantillas, un librería de ORM; la aplicación ya tiene una estructura: los controladores van en este directorio, las vistas en este otro; Rails utiliza Convention Over Configuration para darle nombre a las tablas en la base de datos, a las vistas y a los controladores; todas las tablas utilizan como clave principal un id autonumérico. Nada más empezar, el equipo de Rails ya ha tomado un montón de decisiones difíciles por ti.
Todas estas decisiones son discutibles, pero en la práctica resulta que en la inmensa mayoría de los casos, las decisiones que ha tomado el equipo de rails son suficientemente buenas. Rails es software con opinión, dice: yo hago las cosas así. Si luego quieres cambiar cualquier cosa, puedes hacerlo. Ruby es un lenguaje tan dinámico que eso no suele ser problema: aunque rails venga, por ejemplo, con su ORM -ActiveRecord- o su motor de plantillas -ERB-, se puede sustituir ActiveRecord por DataMapper o ERB por Haml. Yo, por ejemplo, cuando programo con Rails suelo utilizar jQuery en vez de Prototype, el framework javasacript que trae Rails por defecto.
Si lo hago es porque tengo claro lo que quiero y sé lo que estoy haciendo. Pero si no lo tienes claro, Rails ya te da un stack que funciona muy bien y te ahorrará muchas indecisiones y quebraderos de cabeza.

Efectivamente, muchas veces caemos en el error de no querer conformarnos con lo bueno y queremos perseguir lo mejor.
Por un lado, podemos sufrir la no-tan-famosa Ley de Mooers ante la ingente cantidad de información (u opciones).
Por otro, es una falacia pensar que seremos capaces de aprovechar realmente el mejor framework para tal o cual necesidad. Esto me recuerda a otro debate histórico sobre las metodologías de desarrollo de software. La única respuesta correcta es: ¡Ten al menos UNA metodología y síguela! Prácticamente cualquiera será mejor que un random() diario.
Sobre el framework RoR, que es a donde parece que querías conducir la entrada, es verdad que te propone una forma de hacer las cosas (heredada en parte de Ruby como lenguaje) pero la libertad de acción posterior es más teórica que práctica porque las facilidades que te da RoR, te las da si sigues su modelo de trabajo y poca gente quiere renunciar a ello.
En otros frameworks, como Django (python) y Grails (java) suceden algo similar, conste.