This is going to sound wacky but... please try adding the following properties to each of your two CSS rules (above):
font-family: Courier;
font-size: large;
line-height: 15px;
There is some subtle stuff going on here. If my theory is right, you are running into a problem wherein IE6 is ignoring the width specified and, instead, is using the width of the actual textual content which is merely an nbsp. You can effectively fix that, however, in a standards compliant and safe way by explicitly telling the browser that you want that nbsp to have a particular size (by specifying something about its font-size and font-family). The properties I gave above are not the only ones you could use. You could, for example, play with a different font family or size to effectively widen or narrow the space in which the background image (the plus or minus) is drawn. Remember, the plus/minus is merely a background to whatever space you've ultimately allocated for that area. The plus/minus are not actually <img> tags. So, if the browser ignores the explicit width you've given then you are obliged to force the width to be what you need it to be via making the nbsp as wide as necessary.
This is, of course, uncomfortably messy but it is reality for now.
If none of that works, you might play around with using position:relative on some of your classes... but that would be a guessing game and I hate to point you in that direction initially.
Good luck. Best regards,
Russ Helfand
Groovybits.com