Eiffel really leaves the impression of the carefully designed language. It obviously helps that Eiffel does not carry the burden of backward compatibility to another language, but could be developed from scratch. It offers a lot of interesting answers to critical questions such as inheritance, exception handling, generic types, not to mention the unique concept of Design by Contract.
The syntax is for the most part consistent and therefore easy to learn. The only syntax element which does not seem to fit is the object creation. To me, creation of objects and assignment are two different things, and the "bang" looks like an ad hoc notation. The agent concept clearly shows Eiffel's limits. Classes and methods are just not considered first class objects.
Eiffel is a strongly typed language with explicit type declarations and as such requires more typing than its dynamically typed counterparts such as Smalltalk. However, the elegant implementation of generic types makes the strong typing a lot less painful than in other strongly typed object-oriented languages.