Actually, some of it is nice.
The file classes (combined with the DirectoryIterator) are nice, and the data structures are generally useful (especially [man]SPLHeap[/man]), though some of them are oddly implemented (for example, behind-the-scenes, SPLStack and SPLQueue are really just both implementations of SPLDoublyLinkedList…kind of an "un"-decorator pattern…).
The data structures are supposedly more efficient in terms of memory than native arrays, etc.. I would use SPLObjectStorage a lot if there were any (efficient, built-in) way to filter/select an object by its associated data. Same for SPLFixedArray, if it could handle associative arrays.
I've read that the iterators are really good, but I haven't had the chance to figure them out yet.
I like using the SPL exceptions (they cover most of my needs, and I don't have to define a ton of my own).