You can differentiate the JS and non-JS experiences using the same URL endpoints by sending a special HTTP header to indicate that it's an AJAX request.
That can allow the server to send back a response without the header and footer if it's an AJAX request, or send a fully composed page if it's not.
Saying that the JS and non-JS experiences are "so totally different" is just an excuse people use to ignore the non-JS scenario.
I will concede that some webapps (particularly games) cannot be reasonably hybridized in this fashion, but I think most developers jump the gun in assuming too quickly that their app is too rich for progressive enhancement.
In my experience, the vast majority of webapp projects out there could be done with progressive enhancement without creating extra work, but as time goes on developers are less and less willing to even consider the idea.