If you need IE6/7 to play along you will either need the extra internal element or you could try negative margins. My recommendation is to use a list for your nav, and add the borders to the links themselves, as such:
<ul id="nav">
<li><a href="#">link</a></li>
<li><a href="#">link</a></li>
<li><a href="#">link</a></li>
<li><a href="#">link</a></li>
</ul>
That is unquestionably (update: used to be. in HTML5 you can now use the nav
element around the list) the most semantic markup for navigation. Then your CSS is simply:
#nav li {
float: left;
width: 20%;
}
#nav li a {
display: block;
border: 1px solid #000;
}
OR: for extra fun you can try the CSS3 box-sizing declaration instead, available now in all modern browsers (not IE6/7) with some help:
#nav li {
/* Opera 8.5+ and CSS3 */
box-sizing: border-box;
/* Firefox 1+ */
-moz-box-sizing: border-box;
/* IE8 */
-ms-box-sizing: border-box;
/* Safari 3+ */
-webkit-box-sizing: border-box;