Should shadow-casting for lights be a property of each light, or a separate Component?
If it's a property of each light, it keeps the data description more concise, and you won't have to pull in auxiliary components to access that information.
However, it also means that every light that theoretically could support shadow-mapping needs to define its own boolean.
By having a Component, you can be more flexible in the allowed data description, and then controllers can handle the different cases as necessary. I'm not sure which one I like more yet.