Это отрицательная маржа, которая делает это. Это немного необычный способ структурирования вашего контента, так что вы попадаете на крайний случай, который IE обрабатывает по-другому.
Если вы структурируете свою страницу более стандартным способом (трудно порекомендовать, как с более подробной информацией, не зная точно, что вы пытаетесь выполнить), вы столкнетесь с менее острыми случаями, подобными этому.
Но если обстоятельства диктуют, что так и должно быть, вы можете добавить margin-left:44px;
к div с отрицательным правым полем (при необходимости измените 44px). Это приведет к:
<html>
<body>
<div style="margin: 0 100px 0 340px;">
<div style="margin-right: -103px; margin-left:44px; height:300px; border:1px solid #3c6; float:right;">right is <br>different<br>when use<br>IE7.0. <br>Why?</div>
<div style="border:1px solid #c63; height:300px;">middle is OK</div>
</div>
</body>
</html>