There is an applicable_formats() function in every block's code (block_<blockname>.php), which defines where the block can appear. You'll find more information in the Developer docs.
It's quite clear that some of the blocks are useful only on some pages, but there might be some technical reasons too for these limitations. Maybe I should ask the question on the Developer forum.