For several reasons i've experienced plugin using setBlock, but forgetting to create/remove a tile for e.g. chests.
So, there are invisible tile blocks after a rejoin, which can be quite annoying
The other scenario: A plugin uses setblock, but doesn't remove the tile. when another tile is placed at the same position, it contains the same data as the old one.
For example you can setBlock a monsterspawner where a chest was, and then you hav a chest displayed inside a monster spawner.
Giving the server the option to remove this would also reduce some load (ticked tiles) and memory on levels, and Level::getTiles() would no longer return invalid tiles.
When setting a TileBlock, a tile could be created using the default compound (previousely getSpawnCompound)
btw you can't link a static artifact name on lastSuccessfulBuild @thebigsmileXD
Why not, the vrsion is fully stated behind it.

Bump: Is this actually a TODO, or should users better create tiles themself via the new, easier tile function?
ideally plugin developers shouldn't need to know that "tiles" or "block entities" are even a thing - they should just be blocks with special behaviour. So yes, this is a TODO.
This is planned for resolution in 4.0. Work is underway to deal with this, amongst other issues.
Most helpful comment
ideally plugin developers shouldn't need to know that "tiles" or "block entities" are even a thing - they should just be blocks with special behaviour. So yes, this is a TODO.