An argument for making it the developer's responsibility is that buildings should last a long time, so should be designed with flexibility to deal with future neighborhood and city developments.
Take the building in his example, with 42 units and only 5 parking spots. That means 37 units are only useful to people who either don't have cars or who can find their own parking such as on street or at nearby paid lots.
Now imagine that other building are built nearby with similar ratios of units to lots, which might lead to a neighborhood where there is not enough street parking or nearby lots, and most units are only useful to people who have no car.
If the neighborhood has good public transit that might work. If transit is not great through you could end up with a lot of units that are only useful to people who can spend most of their time within walking distance of their home.
How well that works depends on what else is in the neighborhood.
By building buildings with only parking for a fraction of the units, you are making a building that only works in some plausible evolutions of that neighborhood.
If on the other hand you make it a requirement that the developer provide parking for all or most units, so they then include a parking level under the units you end up with a building that works in a much larger range of possible futures for development in the neighborhood and for changes in public transit.
If at the time you build the building a mix of 37 units without parking and 5 with parking would be fine for that neighborhood, build in the parking level but partition it into 5 parking spaces and and 42 storage. The storage units will make the units more attractive, and if future needs change so that what you need there is a building with more parking you can change the partitioning of the parking level. You can even configure it back and forth as the neighborhood and city evolve over the lifetime of the building.