I don't think the issue is really that its a block level element. Its more that browsers use block level elements to determine what is layout from what is content. Browsers have a hard time understanding where the boundaries of click able objects extend in the stacking order if the content of an anchor isn't inline (IE not layout). I assume this is a throwback from the early days when people didn't make links with anything other than text. Sort of the same way IE6 doesn't understand li:hover.
Coincidently this might be a safety mechanism as well since your browser would have a really hard time with something like
<a href="#">
<div id="myDropDownMenu">
<a href="#">Some Link</a>
<a href="#">Some Link</a>
<a href="#">Some Link</a>
</div>
</a>
- <a href="#">
- <div id="myDropDownMenu">
- <a href="#">Some Link</a>
- <a href="#">Some Link</a>
- <a href="#">Some Link</a>
- </div>
- </a>
In a case like that I'm pretty sure most browsers would freakout and who knows which element would receive a click
my gut tells me that its allowing the block declaration in the CSS since a browser inherently knows what to do with an <a> without relying on the css for more information outside of styling the content. The CSS thing is a really nice workaround for when you need a large block of content to be clickable though.
If at first you don't succeed F1... If that doesn't work try Google!
//// Designer, Developer & Teacher - Interactive, Motion and 3D \\\\
Portfolio at WhenImNotSleeping.com