So far, I've read through Jonathan Cauldwell's "How To Write ZX Spectrum Games" as well as Hardman and Hewson's "40 Best Machine Code Routines for the ZX Spectrum
Jonathan has a nice writing style and keeps things concise. The pace at which he explains all the stuff feels about right. All in all it's been a very interesting bed-time read for me which made me long for more.
Hardman and Hewson's book, on the other hand, gives a very long introduction into Z80 assembly, thereby wasting a considerable number of pages, of which the books has only ~150 in total anyway. They have nice examples here and there, but sometimes the displayed code seems a bit bloated, and what they write about the code is merely a translation of the assembler code into the English language. Still, I wouldn't want to argue totally against the book as it nevertheless provides a useful collection of routines that may serve as a starting ground.
At the moment I'm trying hard to get my hands at a copy of "Advanced Spectrum Machine Language", although I'm having a bit trouble to convince myself that existing copies usually come at a very high price.