상황에 맞게 사용하시면 됩니다.
작성자님의 질문 의도가 무엇인지는 알지 못하겠지만 제 생각에는 더 효율적인 방법을 묻기위해 질문을 올리신거 같습니다.
ViewHolder 패턴을 쓰는 이유는 Adapter의 getItem 함수에서 item에 쓰이는 view 인스턴스를 획득하기 위해 사용하는 findViewById 함수의 사용을 줄이기 위해 사용하는 것입니다.
일반적으로는 각각의 커스텀Adapter마다 ViewHolder Inner클래스를 정의하여 사용하지만 만약 해당 리스트에서 item에서 사용하는 layout이 같다면 같은 view구조를 갖게 되는것이므로 ViewHolder도 공유해도 상관 없으나 각 커스텀Adapter 에서 사용하는 layout이 다르다면 ViewHolder를 공유하면 차후에 한쪽 layout을 수정하면 공유하고 있는 다른 layout도 같이 수정해야 되므로 이를 잊었을때 앱이 터지게 되겠지요.
상황에 따라 어떤 방법을 써도 상관은 없지만 일반적으로는 Holder는 그 Adapter에 의존적이기 때문에 그냥 1:1로 구현하는것이 정신건강에 좋을거 같습니다.