Static vs. Dynamic
The main difference between to two types of Tilemap renderer can be found in how the tile data is prepared for the GPU. In a Static tilemap, we store the data directly as a mesh, instead of rebuilding and culling each tile individually like we do with the dynamic tilemap.
During its creation, the dynamic tilemap generates an array of meta data tiles that describe the tile that will be rendered. The tile description contains properties like alpha, tint and visibility. This tile is also used to cull based on the current camera so we don't render unnecessary tiles. Finally, the tiles are rendered by adding them to the sprite batch which generates the vertices at runtime and uploads them to the GPU.
In contrast, the static tilemap can be very fast to render since the vertices are already stored in VRAM and we don't need to update that data every frame. This is especially good since updating resources from the CPU is very slow because it requires synchronising the GPU with the CPU. At the end, the whole map is rendered in a single draw call without stalling.
To summarise: A Static Tilemap stores the map data in VRAM, avoiding the need to push the data to the GPU every frame. Whereas the Dynamic Tilemap is built especially to work with the Sprite Batch renderer, so it has to push the data up every frame. If your data is constantly or even slightly changing, you need this approach.
You'd use a Dynamic Tilemap if you require any of the following features:
Animated Tiles
Tiles can be animated by way of modifying their tile ID. The ID is purely a reference to a frame within the tileset. By changing the ID over a period of time it has the same effect as animating the tiles. You can do this either to a single tile, or you could code it to update all tiles in the map that are animated. We have not added any helper functions for this yet, instead concentrating on providing you with the technical ability to do it first, so you can roll your own. In the future, though we can build upon this feature and make it more 'friendly'.
Per-Tile Tint support
This is a nice feature! WebGL only of course but you are able to modify the tint value of any single tile in the map. You can adjust a specific tile, for example, if you want to tint the tile at position 30x20 in your map, you can do that. Or you could loop through the tile data and tint any tile that matches your own criteria.
This could be used for some neat lighting and environmental effects with a little careful planning.
Per-Tile Alpha and Visibility support
As you can imagine you can also change the alpha and visible state of any single tile. Again, this impacts just one tile, or you can loop through the tile data applying your own matching constraints. The Alpha property could be tweened, leading to nice visual effects, or just toggled based on actions in your game. It's up to you how you use it!