If you intend to get information of the element finishes, I'd say you'd do better using Surfaces, because the Building Materials generally depend on the composition you're using, and the Surfaces have a more versatile use (Elements can have surface override, for instance). Also, the Building Material ID isn't available in an auto-text.
One path to achieve this would be having the whole name of your Materials or Surfaces containing such info, with separators. Such as "01 | Concrete". Under the Properties section you're able to create Substrings of that names, so you'd be able to create a property which gets only the "01" and other one that gets only the "Concrete".
Sending those to a Schedule might be a bit difficult though. You might create Schedules of all the Surfaces your project contains to put out such list.
I've been through the exact same issue here in our firm, and I ended up diving in GDL to craft custom labels and "schedule-like" 2D Objects. And we used Surfaces for such.
You're able to create such labels using properties as well, without the need to code them, but the schedule itself will end up a bit dull - merely a list containing ID and surface name.
I think we lack native tools in AC to fulfill this task easily and in an appealing manner.