Какая разница между патернами?
Во втором случае вызовы 
var App1 = new App();
var App2 = new App();
создадут два разных объекта.
Первый случай гарантирует что на странице будет только один App.
Также есть разница в производительности, т.к. прямой вызов метода быстрее, чем поиск и вызов в прототипе - разница очень мала, но в критических местах может быть ощутимой$(function(){

  // Для первого способа можно изменять объект, зная что эти изменения видны всем
  App.prop1 = true;

  // Для прототипов изменения App1 не отражаются родительском App
  var App1 = new App();
  App1.prop1 = true;

});
$(function(){

  // Для первого случая есть изменения
  console.log(App.prop1); // true

  // Для второго случая создается новый потомок, который ничего не знает о других потомках
  var App1 = new App();
  console.log(App.prop1); // undefined

});
Если вам нужен всего один и единственный App - то используйте модуль. 
А если у вас набор из разных App - то их как раз правильно будет создавать в виде экземпляров класса App. 
Вас скорее всего смутило, что и в первом и втором  примере - методы описаны одинаково ) Но паттерны, как таковые овершенно разные и служат разным целям