The coin code probably doesn't enforce the 1000 being sent to the dib address (I didn't look at the code), it probably only creates those blocks for mining. A miner probably just modified the code to create blocks with 20 instead of 1000. The coin code should check this reward and reject blocks that do not have the proper reward to the dib address.
The coinbase field may contain arbitrary data, see
https://bitcoin.org/en/glossary/coinbase