It seems to me that implementing a marker interface and attaching an attribute with no parameters differ only in syntax, but the former is more straight forward to use with run time type information.
I am not prepared to make a hard and fast rule to never use marker interfaces, personally, but I can see the potential downfall if they are used for more than merely "marking" - in which case attributes might be a better fit.
That said, if I compare the first time I came across an empty interface (I remember it was definately Java circa 2000) with the first time I came across an attribute (C# web services) - I was able to deduce the purpose of the one but the other forced me into a learning mode...