The only way that 'null' value could enter the ackedStanzas list is via the unacknowledgedStanzas.poll(). unacknowledgedStanzas.put() is guarded by a null check, but poll() would also return null if the queue is empty, which could be the cause if the stream mangement counters are for some reason off.
I always expected that Stream Management issues would be tough ones. This is a good example that it is really the case. In most cases a stacktrace is enough to get an idea what's going wrong, and how to fix it. But this is not true in this case. While I can't rule out that this is a bug in Smack, it's also possible the other involved party is reporting wrong values.
Ideally you are able to reliable reproduce this error and collect a debug log output, i.e. a trace of the XMPP stream, and report this together with the stacktrace and exact Smack version (the git commit used).
Thanks for your report so far.