Is my proof of my greedy algorithm to find subsequence correct?
A post that requests us to check if a solution to a problem is correct is off-topic in general, especially when the solution is correct. However, in the current case, there are a couple of minor conceptual misunderstandings in this question, which I would like to address.




  Would this be a way to prove the optimality as I cannot find another optimal that takes more than $O(n+m)$, hence just showing that the optimal and greedy would give the same result?


What is "the optimality"? In the original problem, there is no requirement of any kind of optimality. The requirements are


the algorithm should decide whether $'$ is a subsequence of $$.
the algorithm should run in time $(m+n)$.


Although your algorithm looks like a greedy algorithm, the quantity or the objective function that should be optimized is never defined. So, it makes little sense to "prove the optimality" of your algorithm. It does not, in fact, make much sense to say that your algorithm is a greedy algorithm without specifying the objective function! That is probably the source of your confusion. That is why your proof seems unclear and dangling at a few places, since your proof is only a proof of correctness.



On the other hand, we can list three objective functions. For one of them, your algorithm is the optimal algorithm. For the other two, your algorithm becomes a greedy and correct algorithm. 

I will state the objective functions in the form of three easy exercises. Hopefully you will not be confused any more.

Exercise 1. Show that your algorithm run in $O(m)$ time. Show that any algorithm that finds $S'$ will run at least in $\Theta(m)$ time in worst cases. (Note that $O(m+n)$ cannot be used here unless we assume $m\ge n$, in which case $O(m)=O(m+n)$.)

Exercise 3. For each subsequence $sub=(S_{i_1}, S_{i_2}, \cdots, S_{i_k})$ of $S$, define its finishing index $FI(sub)=i_k$. Show that your algorithm is a greedy algorithm that finds a subsequence of S that is the same as $S'$ with the minimum finishing index if there is a subsequence that is the same as $S'$.

Exercise 3. For each subsequence $sub=(S_{i_1}, S_{i_2}, \cdots, S_{i_k})$ of $S$, define its total index $TI(sub)=i_1+i_2+\cdots+i_k$. Show that your algorithm is a greedy algorithm that finds a subsequence of S that is the same as $S'$ with the minimum total index if there is a subsequence that is the same as $S'$.