I agree that you should be familiar with frameworks such as Cairngorm as you'll certainly come across many projects that use it. I don't agree that it's a good architecture, however.
My first complaint with Cairngorm is that it introduces numerous singletons (FrontController, ServiceLocator, ModelLocator). The singleton pattern has its uses when used appropriately but it kills modularity in most application development. For example, many developers use a singleton to store remote host information for their HTTPService objects but that assumes that all of your application uses a single remote server. That may be the case in the short term but if you ever modularize parts of your application to use different servers then it becomes extremely difficult to decouple from a singleton model.
My second complaint is the global model (ModelLocator). Tightly coupling all your code to a single model not only kills modularity but also makes that single class too knowledgeable about the application as a whole. On top of that, ModelLocator isn't even a real GoF pattern. The Cairngorm creators just made it up. If you really want a singleton model, at least separate out the logical models into their own classes.
Lastly, I find that Cairngorm introduces a ridiculous amount of complexity into what should be fairly simple tasks. To run something on the server you have to fire an event to the FrontController which executes a Command which calls a delegate which looks up a service locator which finally calls the server. On the way back it must call the command which updates the ModelLocator which fires an event for the interface to pick up. There's probably six files that you need to alter or create in order to add even the most simple functionality. I think there are good places to use all these patterns but if your application doesn't require them all the time, then your application should be fitted for whatever is appropriate.
As far as architectural frameworks (Cairngorm) versus application frameworks (Flex), the line is thinning between the two. Architectural frameworks provided facilities such as a controller pattern but now you can implement a controller via annotations (@Bindable). Flex is a domain-specific language (client-side UI) so it lends itself to incorporating architectural framework elements into its base application framework. A language like Java can be used across such as wide array of domains (back-end processing, database processing, embedded devices) where creating domain-specific frameworks can be useful.
If you want to read some other good points as to why Cairngorm can come up short, I recommend reading the Farata Systems blog (http://www.faratasystems.com/blog.php). They do a good job of articulating the pros and cons of third-party frameworks. Search for "Cairngorm" and you can find a couple blog entries.
If anything, I would argue that Cairngorm should be used for small projects that do not need to be modular. Anything larger should be architected based on the requirements of the project, which may or may not work with an existing third-party Flex framework.