My working:
(a) We can see that $[a_n, b_n] \subset [a_{n-1}, b_{n-1}] \subset .... \subset [a_o, b_o]$. So we have nested intervals here which are closed and bounded. Using the theorem of nested intervals, we know that $ \bigcap_{n=0}^{\infty} [a_n, b_n] = [a,b]$, where $a = \sup(a_n)$ and $b = \inf(b_n)$. However, we can also see that $\lim_{n \to \infty} (b_n - a_n) = 0 \implies b=a$. Therefore, $\bigcap_{n=0}^{\infty} [a_n, b_n]$ = {$a$} $\implies a_n \leq a \leq b_n, \forall n \in \mathbb{N}$, where a is our $\xi$.
(b) We have constructed nested intervals in such a way that $[a_n, b_n] \bigcap S \neq \emptyset$, $\forall n \in \mathbb{N}$. This implies that there exists $s_o \in S$ such that $ a_n \leq s_o \leq b_n, \forall n \in \mathbb{N}$ $\implies a_n \leq s_o \leq \sup(S) \leq b_n, \forall n \in \mathbb{N}$ by the completeness axiom. Now suppose that $s_o < \sup(S)$. This would imply that there exists $s_1 \in S$ such that $s_o < s_1 < \sup(S)$ $\implies a_n \leq s_o < s_1 < \sup(S) \leq b_n, \forall n \in \mathbb{N}$ which is a contradiction to part (a), since we cannot have more than one element in the intersection. Therefore, we have $s_o = a = \xi = \sup(S)$.
This is because $s_o = \sup(S)$ and we have $a_n \leq s_o \leq b_n, \forall n \in \mathbb{N}$ and also $a_n \leq a \leq b_n, \forall n \in \mathbb{N}$. By comparing these two inequalities, we can see that $\sup(S) = s_o = a = \xi$.
I think most of the proof is informal, please help me in making a formal proof. Thank you and do correct any mistakes! :)

I checked part (a) and it is correct and well written in my opinion (provided that it is allowed to use the theorem of nested intervals).
In part (b) however, there are some flaws in my opinion.
I think this is not correct (and if it were correct it should be better explained). There is no reason to believe that the $s_o\in S$ can be chosen independently of $n$. By part (a) one can find $\xi$ with $a_n\leq \xi \leq b_n$ for all $n$, but this is not necessarily in $S$. In fact, there are concrete cases where $s_o\in S$ is wrong: for example, $S=(0,1/3)$, $a_0=0,b_0=1$, then one can show that $s_o=\xi=1/3$, but $s_o\not\in S$.
I would suggest to not use $s_o$, but use $\sup S$ directly instead. Then, from your proof we can extract two useful inequalities: $$ a_n\leq \sup(S) \qquad\text{and}\qquad \sup(S)\leq b_n, $$ which both hold for all $n$. In my opinion, both inequalities require an explanation why they are true (for $a_n$ this is easy, and for $b_n$ this requires more effort).
Using these two inequalities and the convergences $a_n\to \xi, b_n\to \xi$ from part (a), the result can be concluded.