Merhaba,
İlk olarak ben de hala kendimi Laravel konusunda geliştirmekte olduğumu söyleyerek başlayayım (hatta şu anda Event ve Listener konularına bakıyorum; aşağıda anlatacağım). Ancak temelde sorularının hepsinin "Design Pattern" konusuna girdiğini söyleyebilirim.
1) Öncelikle Controller içerisine istediğin kadar Model'i gömebilirsin. Bunda bir sınır yok. ServiceProvider olayını biraz karıştırmışsın sanırım. Provider'lar Model olarak kullanılmıyor. Projenin her hangi bir yerinde ya da tüm noktalarında otomatik olarak yüklenmesi ve gerekli işlemleri yapması için varlar. Adı üstünde; bir Hizmet Sağlayıcı'sıdırlar...
2) Policy konusu, tabii ki Controller içerisinde yapılabilir. Ama o zaman MVC felsefesinden çıkıp prosedürel programlamaya doğru hızla ilerlemiş oluyorsunuz

MVC'de mantık, bütün projeyi iş parçacıklarına ayırmak. Ve projenin her hangi bir yerinden o parçacığı kaldırdığında ya da eklediğinde hiç sorun çıkartmadan kaldığı yerden işlerine devam etmesini sağlamaktır. Ayrıca neyi nerede bulacağınıza dair size daha hızlı fikir verir. Buna ilaveten bir de 30 yerde aynı sayfa için aynı doğrulamayı kullandığınızı düşünün. Bir harfi dahi değiştirecek olsanız 30 ayrı noktaya erişip değiştirmeniz gerekir. Fakat MVC mantığında; örneğin UserPolicy dosyasında kullanıcıdan gelen 'username' içeriğinin hiç sayı içermemesi gerektiğine karar verdiğinizde; sadece UserPolicy dosyasındaki değeri değiştirmeniz 30 ayrı noktaya etki edecektir...
3) Event ve Listener olayları ise benim laravelde bir ayrı sevdiğim noktalar

Mesela UserAddedEvent şeklinde bir eventin var ve bunu sisteme bir kullanıcı eklendiğinde tetikliyorsun. Listener içerisinde yapacağın bir kaç işlemle yöneticilere yeni bir kullanıcı eklendiğini haber verirken, kayıt olan kullanıcıya da sms, mail vs gönderme işlemlerini de tetikliyorsun. Ve işin güzel yanı da bunu "event(new \App\Events\UserAddedEvent($newUser));" şeklinde Controller metodunda araya sıkıştırıp, ortalığı hiç karıştırmadan diğer işilerine devam ediyorsun. Ondan sornası silsile halinde tetiklenen event'ten ilerliyor... Yani şöyle düşün: Düz bir zaman çizgisi çiz. Başlangıç noktasından ilerleyip bitişe doğru gidiyorsun. O esnada üzerinden geçtiğin belirli noktalarda olaylar tetikleniyor ve sağa sola yeni dallar çıkıyor. ama sen yine düz yoluna devam ediyorsun... İstediğin zaman o dalları kırıp atabilirsin. Ve o düz zaman çizginde, eksilen ya da artan bir şeyler olmaz.

Garip bir örnek oldu.
4) Middleware olayı da güzel. Aşağıda bir resim var. O resimde siyah çizgiler ile belirtilen dairelerin her biri bir middleware. İlkine geldiğinde middleware fonksiyonu sana olumlu yanıt verirse geçişine izin veriyor; ama izin vermezse de duvara toslar gibi toslatıp geri teziktiriyor

Ben bu olayı biraz sperm'in yumurta'ya girişine benzetiyorum

Mesela aşağıdaki örnekte bir Request(istek) geldiğinde ilk middleware(session) inceleniyor. Oturum(session) mevcutsa Authentication(yetkilendirme) sağlanıyor. App(uygulama)'ya giriş yapılmış oluyor ve Response(yanıt/sonuc sayfası) ile kullanıcıya dönüş yapılıyor gibi bir senaryo düşünülebilir.