BufferOccupancy should give effect on RB allocation, not on MCS.
CQI AND OLRC Output → SINR->MCS needs to be followed for MCS. Now as per that MCS and BufferOccupancy , calculate corresponding RB allocation and TBSize.
PUCCH power control can be the culprit due to buffered DL traffic. If PDSCH are very apart from each other there are high chances that PUCCH power is not properly maintained, so many HARQ Acks will not get received at gNodeB.
Periodically Dummy TA command(Value:31) can be sent to UE, to be in sync for PUCCH power maintenance.