ぶつぶつ also means muttering or grumbling, but can also refer to small bumps or spots. ぐちぐち is more specifically about complaining or mumbling in a low voice.
Etymology
Onomatopoeic word mimicking the sound of low, indistinct speech or grumbling. The kanji 愚痴 (complaint) is used for the noun form, but the reduplicated form is almost always written in kana.