There are the three factors for Korean honorific speech: (a) subject honorification, (b) object exaltation, and (c) speech styles. (You may refer to this.)
Your question and example relate to the first one. These words belong to it:
- -(으)시- (meaning "-으시- or -시-")
- others used for honorific speech (-님, -분, 계시다, 잡수다, 주무시다, 아드님, 따님, 진지, 말씀, 댁, 생신, 춘추, ...)
할머니가 식용유를 사러 슈퍼마켓에 가셨어요.
Because this includes -시- (가시었어요 is shortened as 가셨어요), the sentence shows the subject honorification although it does not have -께서.
할머니께서 식용유를 사러 슈퍼마켓에 가셨어요.
This follows a reference, 표준 언어 예절(2011) - 경어법. It sounds better to me.
할머니께서 식용유를 사시러 슈퍼마켓에 가셨어요.
This sounds a bit awkward to me (because 가다 is the last verb and I usually use -(으)시- for the last verb/adjective only); it is also correct but not advisable according to the reference.
I have heard all the three kinds of sentences. People tend not to use -께서 for casual conversation. When you have to follow the guidelines (for example, in formal situations), however, you should use -께서.
The national institute mentions why 께서 is not often used in speaking Korean as the following:
존칭의 조사 '께서', '께'는 대화에서는 잘 쓰이지 않는다. 용언의 '-시-'로도 충분히 높였다고 생각하기 때문이다.
That is, people think using -(으)시- is sufficient for the subject honorification in speaking Korean.