I'm going to answer this as asked in the title:
Yes, a developer should know the inner workings of the hardware. How much depends on the type of developer & their goals, available time, and personal interest. The priority should, of course, be on the immediate tools, techniques, etc., that they employ in their area. This opinion is along the lines of being a well rounded individual. The more you know of things outside of your craft, without sacrificing your craft, the better.
That doesn't mean that you need to get crazy with the Cheese Whiz. Have a good overview of the hardware, how the pieces interact, how operating systems use them. Along these lines, I suggest reading an operating systems concepts book for all developers.
Do I know all of this? Heck no. I've forgotten so much useless information about SCSI that it's not even funny. However, learning about it was an invaluable experience. I've also forgotten a lot of other hardware related details, but recall the important concepts that I learned from that knowledge.
So, I certainly suggest learning about the hardware. Do it at a reasonable pace, depending on your needs. Learn as much of the details as you reasonably can, but focus on the concepts.