Полагаю, что для этого нет единой «лучшей практики» - это зависит от вашего стиля кодирования и требований к вашему приложению. Вы определенно можете создать репозиторий для каждого типа сущностей в вашей системе - это будет прекрасно работать.
В вашем случае здесь, я бы, по крайней мере, подумал бы о наличии хранилища для водителей и, возможно, второго хранилища для автомобилей, двигателей, шасси (поскольку это своего рода область знаний - они взаимосвязаны, они принадлежат "вместе".
Но: конечно, если этот единственный репозиторий для автомобилей, двигателя и шасси становится слишком раздутым, вы можете разбить его на три отдельных репозитория.
Я бы попытался найти баланс между количеством репозиториев - попытаться сгруппировать то, что логически принадлежит друг другу, - и количеством методов в этих репозиториях. Пять, десять методов - это нормально - если вы говорите о 20, 30 или 50 методах, ваш репозиторий может быть слишком большим и громоздким.
Это определенно архитектурное решение, и, как таковое, на самом деле это не так уж много неопровержимых фактов, которые могут вас направить - это скорее "внутреннее чувство" и опыт такого рода. Если у вас еще нет этого необходимого опыта - используйте один подход, используйте его, а когда закончите - посмотрите на него снова критическим взглядом и посмотрите: что с этим сработало? Что с этим не сработало? а затем в вашем следующем проекте, попробуйте другой подход и поставьте под сомнение его обоснованность в конце проекта. Живи и учись!