Eu suspeito que isso seja intencional (em vez de apenas um bug). Em caso afirmativo, por favor, encaminhe-me para a documentação relevante para uma justificativa.
~$ i=0; ((i++)) && echo true || echo false
false
~$ i=1; ((i++)) && echo true || echo false
true
A única diferença entre as duas linhas é i=0
vs.i=1