(Here’s a post I started a long time ago. My group has started up another 3e campaign, though, so time to finish it up and publish it.)
In 3e D&D, a “small” creature gets a +1 to attack rolls (which makes it easier for them to hurt others in combat) and a +1 to Armor Class (which makes them harder to be hurt in combat). Conversely, a “large” creature gets a -1 to attack rolls (which makes it harder for them to hurt others in combat) and a -1 to Armor Class (which makes them easier to be hurt in combat). Bigger and smaller creatures have larger and smaller modifiers in the same vein.
The problem here is that 3e often falls for a fundamental mistake about how the underlying combat system works. The attack roll was formerly called a “to hit” roll, but if you analyze the entire system, you see that thinking of this roll as actually determining whether an attack made contact doesn’t really make sense. Attack rolls, armor class, damage rolls, and hit points really have to be treated together as an abstract system.
If you say that because larger creatures are easy to hit than smaller creatures and thus give the larger creature a penalty to Armor Class, you haven’t really represented that larger creatures are easier to hit. What you’ve done is made the larger creature less effective in combat. The D&D combat system doesn’t answer the question of whether an attack hits. It answers the question of how effective each combatant is.
You can say that adjustments to constitution scores, hit dice, and hit points make up the difference. In truth, however, they really don’t.
It might work, however, to reverse the modifiers. Giving small creatures a penalty to attack rolls and AC would make them less effective in combat, which is what I would expect the general rule to be. Giving large creatures a bonus to attack rolls and AC would make them more effective in combat, which—again—is what I would expect the general rule to be.