Andrew Tannenbaum's Minix [1] was pretty much made for this purpose. The current version is no longer a "teaching OS", but there is a lot of documentation on earlier versions around, including the original 1987 book [2] that Tannenbaum wrote on operating systems (which comes with the Minix source code).
No, it's not a tutorial, which I don't think would make sense. Rather, it's a walk through the design and implementation of Minix. Minix is tiny, so you can actually follow along. In theory, by the time you're done you'll not just know Minix, but you'd be able to write your own kernel if you wanted to.