If you need someone to blame, blame IE 
Let me explain: Label gets rendered in <span> element; by W3C standard, <span> element is of type inline, so it does not have width (it is not applicable to it).
So, Firefox and other browsers render label correctly. If you do want that kind of behaviour, you can do following:
Create CSS class which will be applied on labels which needs width:
.fixedLabel
{
display: block;
float: left;
}
Now, give to your labels this CssStyle:
<asp:Label ID="label1" CssClass="fixedLabel" runat="server" Text="This is label 1" width="250px" /><asp:TextBox
ID="TextBox1" runat="server"></asp:TextBox><br/>
<asp:Label ID="label2" CssClass="fixedLabel" runat="server" Text="This is another label" WIDTH="250px" /><asp:TextBox
ID="TextBox2" runat="server"></asp:TextBox><br/>
and display should be ok in all compliant browsers.