Coenzymes redistribute a variety of resources (e.g., electrons, phosphate groups, methyl groups) throughout cellular metabolism. For a variety of reactions requiring acceptors or donors of specific resources, there often exist degenerate sets of molecules (e.g., NAD(H) and NADP(H)) that carry out similar functions. Several hypotheses can explain the persistence of coenzyme degeneracy, but none have been tested quantitatively. Here, we use genome-wide metabolic modeling approaches to decompose the selective pressures driving enzymatic specificity for coenzymes in the metabolic network of Escherichia coli. Flux balance modeling predicts that only two enzymes (encoded by leuB and pdxB) are thermodynamically constrained to use NAD(H) over NADP(H). In contrast, structural and sequence analyses reveal widespread conservation of residues that retain selectivity for NAD(H), suggesting that additional forces drive enzyme specificity. Using a model accounting for the cost of oxidoreductase enzyme expression, we find that coenzyme redundancy universally reduces the minimal amount of protein required to catalyze coenzyme-coupled reactions, inducing individual reactions to strongly prefer one coenzyme over another when reactions are near thermodynamic equilibrium. We propose that partitioning of flux across multiple coenzyme pools could be a generic phenomenon of cellular metabolism, and hypothesize that coenzymes typically thought to exist in a single pool (e.g., CoA) may exist in more than one form (e.g., dephospho-CoA).