In general, when you are choosing an infrastructure model the first question you need to ask is what your team is comfortable having responsibility over, and what your organization is willing to pay to have somebody else worry about. You could do it in-house, pay a managed services group or Sitecore partner, or have Sitecore do things for you. Figure out what your team wants to have responsibility for and then that will guide you towards the best hosting model for your production environment.
Sitecore has no official recommendation on IaaS or PaaS, both are offered so that you can choose how much of the infrastructure hosting you want to do. There is also a Managed Cloud option where you let Sitecore spin up the infrastructure for you and Sitecore provides a bunch of services along with it:
IaaS using containers is the current "hot trend" which gives you something a little bit between traditional IaaS and PaaS. This is the direction a lot of technical teams are going right now. Here are a few current materials on this in relation to Sitecore:
There are loads others, but this can give you a start.