たとえば、subject でこのように書けて、
subject { model.errors }
it { is_expected.to be > 0 }
これを DRY にしたくて
subject { model.errors }
it { is_expected_to_be_invalid }
def is_expected_to_be_invalid
is_expected.to be > 0
end
というだけの話ではないかと思います。 これを実現するのに shared_example を使うのはやりがちな罠ですがオーバースペックだと私は思ってます。
都度判断ですが、一つの期待結果として抽象化可能 (同値) であればメソッドつくればいいですし、example として期待結果の意味するところが違うなら実装が同じであっても抽象化しないほうがよいです。