It depends on how the transactions that do the spending are constructed.
With the Satoshi client, your change is always send to a new address (for maximum privacy) so a typical transaction looks like:
Spend:
20 BTC from a transaction using address:ABC123 (I am simplifying here)
To:
10 BTC to address XYZ111
10 BTC to address JKL222
Here XYZ111 is where you want to send your BTC to and JKL222 is
your address for the change.
With transations like this you do not know (reliably) where your BTC are coming from. The next transaction will probably spend from JKL222 as ABC123 is all spent.
This in intentional in the Satoshi client so that it jumbles up the change and the sendee's addresses.
Different code bases do things different. For instance by default the bitcoinj code sends change to the first of your addresses used (I do not think there is a particularly deep rationale for this - it is simply the easiest to implement).
So for bitcoinj code a transaction looks like:
Spend:
20 BTC from a transaction using address: ABC123
To:
10 BTC to address XYZ111
10 BTC to address ABC123
You could then reuse the change on BTC on ABC123
For blockchain.info I believe you can specify explicitly the change address to that you can pop your change back to wherever you like.
TL;DR
With the right transaction structure you can send from a predictable, repeatable address but you lose privacy doing this.