Ведь по идее параллельно - ты должен был быть более осторожным, когда покупал эту машину. То есть past simple в обеих частях, но в первой почему-то have been. То есть так You should be

more careful.
Или это исключение для глагола be?
Правильно вы мыслите - "должен был быть". Только ни Past, ни Present здесь ни при чём. Там, где появляется модальный глагол should, там исчезают все времена.
Но во второй части - bought. То есть речь о свершившемся событии. То есть ему надо было быть осторожным тогда, в прошлом - когда он покупал машину. Чтобы выразить сожаление о прошлом (эх, надо было быть осторожным, а он не был), после should ставят перфектный инфинитив (have + V3), и это как раз ваш случай.
you should be - тебе следует быть осторожным. Это не про прошлое.
Таковы правила английского языка.
Почитай про модальные глаголы.
Нет, совсем не значит что должно быть параллельно, have been это past perfect, конкретно в данном предложении используется потому что действие было совершенно ДО другого действия в прошлом, то есть тебе надо было быть более осторожным ДО того/во время того как ты купил машину. Если бы вы использовали просто should be, это было бы просто советом, но в таком случае вторая часть предложения изменила бы время на present simple.
Чтобы понять это, нужно изучить тему "модальные глаголы со сложными формами инфинитива". Иногда её называют "с перфектными инфинитивами". Модальный глагол should с Indefinite Infinitive обозначает действие, относящееся к настоящему или будущему, и переводится "следует быть" (или что-то делать, если глагол другой). Глагол should с перфектным инфинитивом обозначает действие, относящееся к прошлому, и переводится "следовало бы быть". В данном предложении действие явно относится к прошлому, деятель не был осмотрительным и купил плохую машину.