jsonb_array_elements() in the select seems to turn a left join into an inner join
Set returning functions should be put into the from clause. Putting them into the SELECT clause is allowed, but can result in strange result (as you have noticed). 

The clean approach would be:

select a.vin, r.data -&gt;'attributes'-&gt;&gt;'name' as style
from vins a
  left join describe_vehicle b on a.vin = b.vin
  left join jsonb_array_elements(b.response-&gt;'style') as r(data) on true


Online example: https://rextester.com/RGY32895