Te las saca porque el "||" es el OR, y un OR es verdadero si al menos una de las condiciones lo es. En tu consulta, cada OR es una condición que se evalúa separadamente. ¿Se entiende?
Para ser lo que quieres debes usar paréntesis:
Código MySQL:
Ver original estado != 'vendido'
OR fechamatricula
LIKE '%$buscador' OR pvp
> 0 AND pvp
<='$buscador' OR pvpsg
> 0 AND pvpsg
<='$buscador')