Tip: Layer 3 backgrounds and tides disappear when you hit a message box, so unless you apply this fix, plan your level around that. For example, you can add a sublevel without layer 3 at the start/midpoint, and include your message there.
It disappears when it gets on the block. It disappears even if it passes by triangle block.
It's a really cool block with interesting set ups but it unfortunatelly has got one fatal flaw: It does not check if all sprites slots have been filled (see spawn_sprite.asm: check for carry and return if carry is set). In that case, the sprite fails to spawn which leaves an invisible solid block.
Side note: SMW already features an invisible solid tile, tile 152 (used for bounce blocks) so including one in the Map16 tile is redundant.
In general, using regular sprites for these blocks is pretty overkill in my eyes and a better option would be to use a either cluster sprite (recommend) or even special sprites dedicated for pure block changing similar to these blocks (I call these "Map16 sprites", my personal preference, requires UberASM).
Side note: If you want to, you can make the sprite just change to the next Map16 after X frames Y times. That way, you don't need a graphics code for the sprite (not that you really can with Map16 sprites). It also has got more consistent graphics as the position is sprites wouldn't be shifted downwards by 1 tile and the palette also is more consistent.
Another side note: It's preferrable to have the block set the sprite's stats (recommend for cluster sprites and Map16 sprites) as that's a common practice in coding. The accumulator A has got the slot of the freshly spawned sprite, btw. (once again, see spawn_sprite.asm).
Although sprite limitations aren't an issue now, there appeared a different flaw: NMI overflow. SMW is pretty bad at changing multiple blocks at the same time which is a problem with the disappear block sprite because they change their tile every. Single. Frame. The result: The top of the screen turn black not just for one frame (which is quite acceptable as it isn't noticable at the first glance) but it's a no-no for a longer time.
The solution is to either use cluster sprites (my recommend solution) or change the tile only after a set amount of frames (how I would have done it).
I also recommend you to put codes for UberASMTool as that's our UberASM standard.