You don’t generally want an array with known properties of certain things, such as your example where the first entry is roof, second entry is plank, etc.
That’s madness to remember and maintain!
Make a proper class to reference them and make an array of those classes.
Mark the class as [System.Serializable] and make an array of them.
This is really just basic data structure design, not really a Unity question. You might want to work through some basic programming tutorials of designing data structures because how you do it will profoundly impact how well you can model your world.
As for serializing in the inspector, Unity has rules and I don’t have a handy chart, but basically one-dimensional arrays are all the native inspector can handle. There are other plugins like Odin that can handle more complex array constructs.
If you’re just authoring bags of game content (which sounds like your use case), look into ScriptableObjects. They’re purpose-built for this kinda stuff.
ScriptableObject usage in RPGs:
Usage as a shared common data container: