The first class of compounds that springs to mind which would provide suitable sub-units, are the ordinary proteins themselves, and indeed this was proposed in the earliest description of the molecular manufacturing concept [Dre81]. Advances in protein engineering will eventually make it possible to create novel proteins based on the usual arsenal of amino acids, and which could become part of a primitive but general purpose assembler. This would essentially amount to being a flexibly programmable enzyme. Even though encouraging results in de novo protein design have been achieved [Ric92], progress has been slow, mainly due to difficulties in design (not in synthesis, which can often be easily accomplished by introducing the artificial DNA sequence for the protein into cellular expression systems with the help of a suitable vector, and then isolating the resulting protein).
The protein folding problem has not yet been solved: one still can not predict the tertiary 3D structure into which the long, one-dimensional chain of amino acids folds up, if one knows only the primary amino acid sequence and does not have the guidance provided by an already solved structure of a very closely related protein. This is so difficult because of the enormous number of bonds which allow torsion, leading to a combinatorial explosion of possible conformations, which can not be effectively dealt with even by large supercomputers applying a straight-forward brute force search. Much more subtle strategies would be necessary, the smart heuristics for which are difficult to find. Accordingly, most of what has been called protein engineering has restricted itself to introducing minor changes into proteins for which the 3D structures were already known, usually obtained by X-ray crystallography.
There exists an easier to solve, so-called reverse protein folding problem, which was first explained in [Dre81]. As the goal of constructing molecular machinery is rather an engineering than a scientific task, one has the freedom of exercising design choices. One can choose to only incorporate complexity to the degree humans can still clearly understand, which is a criterion which was not always respected by biological evolution. And so the task of finding an amino acid sequence which folds up in a predictable fashion should be much easier to accomplish than trying to find out how a sequence given by nature folds up, especially if one applies a systematic bias towards cutting down on complexity and conformational freedom. This area has not yet been explored very much and could be an important and fruitful path for further, relevant research.
Because ordinary proteins pose so many design difficulties, the temptation can hardly be resisted to gravitate towards the other extreme, to make the designing of the sub-units very simple, but to make their synthesis a more difficult problem. In this domain, one would like to build a 3D structure by joining molecular building-blocks which are able to form covalent bonds in three dimensions (as opposed to the essentially only one dimension offered by amino acids and nucleotides). One can imagine the picture of building a 3D crystal by stacking regularly shaped "bricks". This approach renders the design of a resulting sub-unit very easy, but shifts the problem to the task of finding the appropriate "bricks" and a satisfactory assembly technique.