The obvious answer for a gene cluster is gene duplication and mutation of one or both genes. But the genes in the lac operon seem not be so functionally/structurally similar (as compared to the Hox gene cluster, for example), so I was curious as to how they ended up physically associated in the first place.
Operons, often but not always, contain clusters of genes (under the control of an operator region) which are involved in the same metabolic pathway. There have been several theories for how these groups of genes have arisen but the current feeling seems to be based around the regulation of the genes in question 1. To facilitate co-ordinated gene regulation there may have been strong selection for physical clustering of genes involved in a particular process. By being physically clustered this also means that all the genes within a given operon are probably subject to the same chromatin remodelling and will then be more easily switched on and off under the appropriate conditions i.e. all turned on when they are needed and switched off when they are not.
Operons with similarly arranged genes have been found in different micro-organisms, leading to the thought that the operon was an ancient and evolutionarily conserved arrangement . The figure below from Fani et al. 2005 presents two possible ways of generating the current state of genome organisation for present day proteobacteria.
If the operon is an ancient arrangement we would predict high gene conservation within operons; but genome analysis of different micro-organisms shows this not to be the case (i.e. gene conservation is low and operons are pretty unstable). Accordingly, another author suggests that due to the lack of conservation, operon structure is pretty plastic and can change readily during evolution . Indeed, Fari et al conclude in their paper that the histidine biosynthesis operon has been a construction or re-construction event from scattered genes and not from the descent of an ancient arrangement:
Our model suggests that the his gene organization in the extant proteobacteria arose from a gene scattering in the genome of the proteobacterial ancestor. The model also predicts that all or most of the his genes (except for hisD) were monofunctional and that they underwent a progressive clustering and compacting which occurred together with gene overlapping and fusion events
They found, as you suggested, evidence for several gene modifications which included elongation, duplication and gene fusions. As for what caused the progressive clustering, see reference 1 again.
Obviously different operons are probably going to have formed in different ways in different organisms and I don't think we can rule out the 'ancient arrangement' argument completely. It's a pretty broad and confusing topic and there's a lot of literature, I hope the examples I picked and have listed are useful!
1 Osbourn, A. and Field, B. Operons. Cell. Mol. Life Sci. (2009) 66:3755–3775
 Fani et al. The Origin and Evolution of Operons: The Piecewise Building of theProteobacterial Histidine Operon. J Mol Evol (2005) 60:378–390
 Itoh et al. Evolutionary instability of operon structures disclosed by sequence comparisons of complete microbial genomes. Mol Biol Evol (1999) 16(3):332–346