From the docs:
If you would like to define a custom model to represent the intermediate table of your many-to-many relationship, you may call the using method when defining the relationship. Custom pivot models give you the opportunity to define additional behavior on the pivot model, such as methods and casts.
There’s no need for a pivot model if your pivot table contains only simple data that you don’t need to manipulate, cast or do other advanced stuff with; but sometimes you do need to do advanced stuff with the data in your pivot table, and a pivot model makes sense then.