It's incredibly difficult to tell what's going on from these photos. Could you capture SCL and SDA simultaneously on two channels, or at least export the waveforms using the scope's software so the waveforms have consistent scaling?
The waveforms don't look terrible, but it's very difficult to really tell because I can't align the SCL/SDA traces.
Battery management chips usually use the SMB protocol, which is not identical with I2C. There are some exceptions about the ACK from the SMB (e.g. delayed ACK), and those are specified in the protocol. Search for SMB protocol specifications pdf, those are open and free.
I've never heard of "delayed ACK" wrt I2C/SMBus/PMBus. I just searched the latest SMBus spec (3.2) and couldn't find anything.
The numerous negative-going spikes are potential sources of problems
How so?
but it’s also odd that the voltage when pulled low is inconsistent.
It's not odd at all to see two different low levels on each line during a transaction. This is due to the master and slave having different pull-down strength, and it's actually convenient because it provides a way do tell who is actually in control of the signals. If there are three different levels, that may indicate both are pulling low at the same time (may happen on SCL during clock stretching).
For example, looking at SDA the we can see the first byte is 0xAA (slave address 0x55 followed by a write bit). The following SDA bit is low, but at a slightly higher voltage than the preceding low bits, which makes sense because that's where we expect the slave to take over SDA to issue an ACK.
The next low pulse on SCL is noteworthy, as its voltage is different from preceding low SCL pulses. In fact it transitions between two different voltages, both of which are different from the preceding pulses. What's likely happening is both master and slave are pulling SCL down, and then the master lets go, and then the slave lets go a bit later, allowing SCL to go high again.
Also the next SDA high pulse is very brief. Impossible to tell from these waveforms if it would be ignored, or interpreted as a repeated start condition.
In the following frame, the master sends 0x2C. The slave then appears to stretch the clock again, but for a longer time than during the address frame. During this time, SDA idles high, and then the ACK comes from the slave (again, with a different low level on SDA).
At this point my eyes are getting very tired of squinting at these waveforms... I'm betting your issue is due to your own MCU and/or firmware not handling clock stretching correctly. Clock stretching is often not repeatable by nature, which may explain why your results are not repeatable.
In order to really help I really will need more clear waveforms, with SCL and SDA properly aligned.