An interface specificies a type, and many classes can share a similar (or identical) behavior by sharing the same type.
In cases where the interface represents the major functionality, purpose, or behavior of an implementing class it does make good sense to refer to instances of the type by using the interface name. The collection classes and the JDBC RowSet classes are great examples of this. A strongly defining characteristic of a CachedRowSet instance is that it is a RowSet, as defined by the contract of the RowSet interface.
But there are classes for which the interfaces they implement provide accessory functionality or behavior. The contract of the interface in these cases are not the raison d'etre of the class ... and here I disagree with Mr. Bloch's maxxim that every interface should become the type you refer to all instances by.
To make this more concrete, how many times are classes that implement Comparable instantiated as Comparables? Or Cloneables? Sure, it does sometimes make sense to use these "lesser interfaces" as types for certain method parameters ... but that is different than "always referring to objects as instances of a type defined by an interface."
TL;DR: the rule that interfaces should alwyas be used as object types is a good rule mostly when the interface has a well explicated contract and when the contract defines a major function, behavior, or purpose of the implementing class.