DDS uses a partly mathematical and partly look-up principle. An EPROM can only be used as a look up table. In that schematic the data outputs of the EPROM are used to drive a crude digital to analog converter (the resistor chain at the output) and each step of the waveform is produced by selecting the value in the next address of the EPROM. The only way to change the output frequency is to select the addresses faster or to use fewer points to recreate the waveform (more distortion!). The only way to get optimum resolution is to use 256 levels (= all 8 bits) and the smallest number of addresses in which each has at least +/- 1 change in data.
In the article there are 8 bits with 128 steps, therefore the addresses change at a rate of 128*output frequency. The reason it isn't used at higher frequencies is the EPROM access time isn't generally fast enough to produce the data at the needed rate. A typical EPROM with an access time of 100nS, ignoring progation delays would only be able to work up to ~80KHz. You can get 16-bit EPROMS or parallel as many 8 or 16 bit ones as you want, that will allow you better voltage resolution (lower distortion) but also further limit the top frequency.
There are other ways to do it, for example, only storing one or two quadrants of data in the EPROM then altering the clocking and inversion of the output but by the time it is implemented you may as well go for full DDS.
Brian.