Is that possible, or is that inherently impossible (or extremely cumbersome) to do with monero because of the private nature of its blockchain?
It is possible, but it requires some small code changes to "tag" outputs of a particular class. Outputs with one tag could only be mixed with other outputs of the same tag and transactions would have to be balanced by tag (sum of inputs with a particular tag would have to match sum of outputs of the same tag, other than special asset create and destroy transactions).
We're a bit hesitant to implement something like this on the main chain due to the possibility of an uncontrolled explosion in size (consider thousands or even millions of these assets/contracts), so the preference is to wait until we are able to set up sidechains and then have asset chains where only someone interested in trading a particular asset would need to use that chain. That makes a lot more sense to me.
See https://getmonero.org/design-goals/
I love the cautious approach of our development team. Monero is too valuable to much rash development decisions without careful research