I am tempted to override the Mobility value in the UDecalComponent constructor and to set it to EComponentMobility::Static. However, is there a desired side effect from the fact that it is Movable, e.g. no shadow casting or some thing like that?
The way decals work can be a bit confusing. The “they only work on static objects” note in the documentation refers to the receiving mesh (the geometry the decal is projected onto), not the Decal Actor itself.
Decals do actually work on movable objects (e.g. a skeletal mesh) as well via the DBuffer, but they can “slip” or look incorrect if the underlying mesh deforms too much, because the decal is projected as a 3D volume, not a 2D texture.
It’s recommended to keep the decal’s mobility to Movable, to preserve flexibility w.r.t. how the decal is transformed: decals are frequently moved or spawned at runtime (for example bullet holes). If they were Static by default, you would see Mobility mismatch warnings or be unable to move them once spawned. You could consider making the decal’s mobility static, if you don’t care about being able to spawn or move it at runtime, and lose that flexibility.
I hope that helps, but let me know if you have more questions.