Block timestamps are set by the block miner/pool. Since Bitcoin is decentralized, there is no absolute time reference within the network (and there shouldn't be). There will always be clock variations between nodes. The blockchain is all about consensus, and the protocol has a tolerance for next block candidates timestamps: they can be slightly in the future, and even slightly in the past, compared to your local clock and the timestamps of previous blocks already in the chain.
In other words, the timestamp is not a strictly increasing sequence, while the block height (of the main chain) is.
Thank you, that makes perfect sense.