Creating the needed functionality from scratch is often more efficient. It also means that the cost of developing the component’s functionality has to be recovered somehow. That extra functionality often makes it difficult to learn about and use a component and adds substantially to the integration work. The main difference here is that pre-fab materials are usually over-specced so that they can be used in a wide variety of interior design software situations - with the result that any given piece of software made from pre-fab components has a whole bunch of unused functionality left over - pipes that lead nowhere, half-walls and stairways to dead ends. Buildings handed over to client before they’re really done.