Incrementar una variable activa EXIT en bash 4, pero no en bash 3

Considere este script bash (ejemplar):

#!/bin/bash -e
errorExit() {
    echo "" >&2
    echo "ERROR (${var_scriptfilename}):" >&2
    echo "An unhandled error occurred." >&2
    intentionalExit 1
}
intentionalExit () {
    trap - EXIT # Unregister the EXIT trap
    exit $1
}
trap errorExit EXIT # Trap script errors
var_scriptfilename="$(basename "$0")"
# ==== START OF TEST ====
var_counter=0
((var_counter++))
echo "var_counter is $var_counter" >&2
# ===== END OF TEST =====
intentionalExit 0

Si lo ejecuto en Cygwin's bash, produce el resultado deseado:

var_counter is 1

Sin embargo, si lo ejecuto en mi cuadro Debian Squeeze, que es su destino previsto, termino en la trampa EXIT:

ERROR (test.increment.sh):
An unhandled error occurred.

...¿Porqué es eso

Si elimino la opción -e, funciona como se esperaba en ambos sistemas, pero quiero mantener -e en uso, obviamente.

La variante "universal" un poco más engorrosa,var_counter=$(($var_counter+1)), funciona con -e establecido en ambos shells, pero preferiría usar la primera notación (o algo similar) ya que claramente sobresale como una operación de incremento al leer el código.

bash --version en la fiesta de Cygwin dice:

GNU bash, version 3.2.51(24)-release (i686-pc-cygwin)
Copyright (C) 2007 Free Software Foundation, Inc.

En Debian, es:

GNU bash, Version 4.1.5(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.

Estoy intrigado de por qué es así. ¿Alguien sabe la causa de este comportamiento?

Además, ¿alguien sabe de una manera similar de incrementar una variable en bash que pueda usar?

Respuestas a la pregunta(1)

Su respuesta a la pregunta