(I'm assuming you're using Donald Knuth's definition of literate programming.)
The key difference is one of sequence.
In writing a regular application, there are restrictions on the order in which you express things.
To illustrate:
- All code for a particular class has to be expressed in one place
(or in a very small number of places, e.g. C# partial classes)
- All the code for one method has to be given in one go, in the correct order for execution
- Dependencies must be declared before the things dependent upon them
(variables declared before use in most languages; procedures/functions declared before use in Pascal; library assemblies compiled before others in .NET)
With literate programming you are freed from this restriction and freed up to express your concepts in whichever order makes sense for you to use when explaining the program to another developer.
This has another consequence - in some forms, you can express a concept once (say, "All properties will fire the PropertyChanged event when changed"), and have that woven throughout your application in a myriad of other places.
For very simple programs, a literate program and a well commented one might look the same - but as the complexity of the system grows, the two will start to appear very different.