I just doubt that a generalized form (in this case humanoid) will actually be better for most applications. We can build specialized robots to perform tasks, which can be optimized to perform what they need to do. If I want to deploy a robot in my factory to do some blacksmithing (I don't know why this example came to mind), I don't need it to be a robot that is built to also be suitable to be a bartender. Why not have specialized robots for the applications (which become easier to develop too)?
We have built professions to work around our own form because that's what we're stuck with. Robots can take many forms, so why make them average at all things instead of making robots perfect for one (or a few).