We have been having this issue as well, however our completions are processed in via DSI (as opposed to directly into JDE) so I don't know if this will be the same resolution.
What we found is that when you run Manufacturing Accounting, there is a time lapse between when it grabs it's record (and therefore the Qty to process) via the data seleciton and when it reserves that record to process it. Due to the high volume DSI was processing there were instances where a completion was being recorded after the QTY was grabbed for processing and before it was reserved, which led to the wrong QTY being processed (and therefore missing some Completions).
We proved this using Debug and pausing the program after the record was grabbed but not yet reserved and found there was indeed a possibility for this to happen.
As a temporary solution we halted DSI processing while manufacturing accounting was running but we are also modifying manuafcturing accounting so that after the record is reserved, it revalidates the QTY to be processed (and doesn't just rely on what it initially grabbed.
All our testing so far shows it works.
FYI, Oracle said it wasn't their problem as it could only be duplicated using high volume like DSI or by pausing the program usign Debug so it's DSI's fault. Go Figure!