There are two main gun mechanics in BF3. Recoil and Spread.
Every bullet that leaves your weapon has a small amount of randomness added to it, this is referred to as spread.
Some attachments add spread, some remove it. Spread is uncontrollable randomness and the reason why I initially advised against using foregrip.
Spread appears to be the mechanic that DICE use to make hip fire inaccurate, however it still exists when aiming down sights.
The only way to counter it is using a heavy barrel.