Regarding Cocoa being finer grained: each generally useful piece in Cocoa (NSWindow, NSButton, NSTableView, etc.) is made up of smaller, but equally useful pieces (NSView, NSControl, etc.) It's more finely grained than Rails. In Rails, the "top-level" abstractions like ActiveRecord are pretty much opaque (in that they aren't made of smaller, but also useful pieces).
As for being design agnostic, Rails is self-admittedly "opinionated software" that dictates (or at least "suggests very, very strongly") how you shall go about building a Rails app. Cocoa, on the other hand, is more in the tradition of general-purpose APIs where you're given the pieces and some ideas about how they could work together (usually under the umbrella of some other piece, like NSApplication), but not much else. Think Lego bricks vs. a model car kit.
by John — Feb 28
As for being design agnostic, Rails is self-admittedly "opinionated software" that dictates (or at least "suggests very, very strongly") how you shall go about building a Rails app. Cocoa, on the other hand, is more in the tradition of general-purpose APIs where you're given the pieces and some ideas about how they could work together (usually under the umbrella of some other piece, like NSApplication), but not much else. Think Lego bricks vs. a model car kit.