По принцип в уеб приложение искате състоянието да бъде възможно най-голям обхват на заявката.
Само в случай на оптимизации на много ниско ниво има вероятност да попаднете на случай, в който е подходящо да създавате единични обекти (и шансовете дори тогава са, че ще изтеглите такава логика за кеширане/споделяне в друг клас, който се изтегля като зависимост от вашите други [request scope] обекти и направете това единичен обхват). Не забравяйте, че сингълтън в контекста на уеб приложение означава множество нишки, използващи едни и същи обекти. Това рядко е добра новина.
На същата основа преходният обхват е най-простият стандарт по подразбиране (и затова Ninject 2 го прави такъв) - обхватът на заявката трябва да влиза в уравнението само когато нещо трябва да бъде споделено от съображения за производителност и т.н. (или защото това е просто контекстът на споделянето [както е споменато в другия отговор]).