Using a background image, you need to absolutely specify the dimensions. This can be a significant problem if you don't actually know them in advance or cannot determine them.
A big problem with ![]()
is overlays. What if I want an CSS inner shadow on my image (box-shadow:inset 0 0 5px rgb(0,0,0,.5))? In this case, since ![]()
can't have child elements, you need to use positioning and add empty elements which equates to useless markup.
In conclusion, it's quite situational.