My reading of that doc does not indicate that the addresses will be based upon the mac address of the client, just an internally generated hash table of addresses, that may or may not get given out in sequence.
If the client sends a release when it goes offline, then that address will be returned to the pool for re-use. If I want something to always get the same address I create a static entry for it, otherwise there would be little point in having that option.