En CSS2.1
attr()
sólo podía utilizarse en el atributo de contenido y el nivel 3 de unidades de CSS
dice que se puede usar en cualquier elemento o pseudo-elemento. Pero es un borrador. Entonces el soporte es el que es.
De todas formas, no entiendo muy bien qué tan ventajoso ves el ponerlo en un
data-*
en lugar de ponerlo en
style
. Ni tan siquiera es menos código.