[proofplan]
We prove equality of matroids by comparing their independent sets on the common ground set $E \setminus \{e\}$. Deletion is immediate from the fact that removing an edge not used by a set $A$ does not change whether $A$ contains a graph cycle. For contraction, when $e$ is not a loop, the definition of matroid contraction says that $A$ is independent in $M(G)/e$ exactly when $A \cup \{e\}$ is a forest in $G$, and this is equivalent to $A$ being a forest in the graph obtained by contracting $e$. When $e$ is a loop, $e$ is contained in no forest, so matroid contraction by $e$ agrees with deletion, which is also the stipulated graph convention for contracting a loop.
[/proofplan]
[step:Compare deletion by testing the same edge sets for cycles]
Let $A \subset E \setminus \{e\}$ be an edge set. By definition of matroid deletion, $A$ is independent in $M(G) \setminus e$ if and only if $A$ is independent in $M(G)$. Since $M(G)$ is the graphic matroid of $G$, this is equivalent to saying that the spanning subgraph $(V,A)$ contains no cycle.
The graph $G \setminus e$ has edge set $E \setminus \{e\}$ and the same vertices as $G$. Because $A$ does not contain $e$, the spanning subgraph of $G \setminus e$ with edge set $A$ is the same graph as the spanning subgraph of $G$ with edge set $A$. Therefore $A$ is a forest in $G \setminus e$ if and only if $A$ is a forest in $G$. Hence the independent sets of $M(G) \setminus e$ and $M(G \setminus e)$ are identical, so
\begin{align*}
M(G) \setminus e = M(G \setminus e).
\end{align*}
[/step]
[step:Reduce contraction by a non-loop edge to forests containing that edge]
Assume first that $e$ is not a loop. Let $A \subset E \setminus \{e\}$ be an edge set. Since $e$ is not a loop in $G$, the one-edge set $\{e\}$ is independent in the graphic matroid $M(G)$. For a matroid contraction by an independent singleton, the definition gives that $A$ is independent in $M(G)/e$ if and only if $A \cup \{e\}$ is independent in $M(G)$. Since $M(G)$ is graphic, this is equivalent to saying that $A \cup \{e\}$ is a forest in $G$.
[guided]
We first separate out the only point where the non-loop hypothesis is used. Let $A \subset E \setminus \{e\}$. Because $e$ is not a loop of the graph $G$, the edge set $\{e\}$ contains no graph cycle. Therefore $\{e\}$ is independent in the graphic matroid $M(G)$.
The contraction $M(G)/e$ is defined by contracting the one-element set $\{e\}$. Since $\{e\}$ is independent, it is a basis of the restriction of $M(G)$ to the ground set $\{e\}$. Thus the independent sets of $M(G)/e$ are exactly those edge sets $A \subset E \setminus \{e\}$ for which $A \cup \{e\}$ is independent in $M(G)$.
Now translate the matroid word “independent” back into graph language. The matroid $M(G)$ is the graphic matroid, so an edge set is independent precisely when it is a forest in $G$. Hence, for every $A \subset E \setminus \{e\}$,
\begin{align*}
A \text{ is independent in } M(G)/e \iff A \cup \{e\} \text{ is a forest in } G.
\end{align*}
This is the bridge between matroid contraction and graph contraction: matroid contraction asks whether adding the contracted edge still leaves a forest.
[/guided]
[/step]
[step:Identify forests after contracting a non-loop edge]
Let $e$ be a non-loop edge with endpoints $u,v \in V$, where $u \ne v$. Let $\pi: V \to V/e$ denote the quotient map on vertices that identifies $u$ and $v$ and fixes every other vertex. The graph $G/e$ has vertex set $V/e$ and edge set $E \setminus \{e\}$, with each edge $f \in E \setminus \{e\}$ incident to the images under $\pi$ of its original endpoints.
We claim that, for every $A \subset E \setminus \{e\}$,
\begin{align*}
A \text{ is a forest in } G/e \iff A \cup \{e\} \text{ is a forest in } G.
\end{align*}
Indeed, suppose first that $A \cup \{e\}$ contains a cycle in $G$. If this cycle does not use $e$, then the same cyclic sequence of edges is a cycle contained in $A$ after contraction, so $A$ is not a forest in $G/e$. If the cycle uses $e$, then deleting $e$ from that cycle leaves a path in $G$ from $u$ to $v$ using only edges of $A$. After applying the quotient map $\pi$, that path closes to a cycle in $G/e$ contained in $A$. Thus $A$ is not a forest in $G/e$.
Conversely, suppose that $A$ contains a cycle in $G/e$. If the lifted cyclic sequence does not pass through the contracted vertex $\pi(u)=\pi(v)$ in a way created by the identification of $u$ and $v$, then the same edges already form a cycle in $G$ contained in $A$, so $A \cup \{e\}$ is not a forest in $G$. Otherwise, the cycle in $G/e$ lifts to a path in $G$ from $u$ to $v$ using only edges of $A$. Adding the edge $e$ to this path produces a cycle in $G$ contained in $A \cup \{e\}$. Hence $A \cup \{e\}$ is not a forest in $G$.
Therefore $A$ is a forest in $G/e$ exactly when $A \cup \{e\}$ is a forest in $G$.
[/step]
[step:Conclude equality for contraction of a non-loop edge]
Combining the previous two steps, for every $A \subset E \setminus \{e\}$ we have
\begin{align*}
A \text{ is independent in } M(G)/e \iff A \cup \{e\} \text{ is a forest in } G.
\end{align*}
By the forest comparison under graph contraction,
\begin{align*}
A \cup \{e\} \text{ is a forest in } G \iff A \text{ is a forest in } G/e.
\end{align*}
Since the independent sets of $M(G/e)$ are exactly the forests of $G/e$, the matroids $M(G)/e$ and $M(G/e)$ have the same independent sets on the same ground set $E \setminus \{e\}$. Thus
\begin{align*}
M(G)/e = M(G/e)
\end{align*}
when $e$ is not a loop.
[/step]
[step:Treat loop contraction by the deletion convention]
It remains to consider the case where $e$ is a loop of $G$. A loop is a one-edge cycle, so no independent set of the graphic matroid $M(G)$ contains $e$. Therefore contracting the loop $e$ in the matroid has the same independent sets as deleting it: for every $A \subset E \setminus \{e\}$,
\begin{align*}
A \text{ is independent in } M(G)/e \iff A \text{ is independent in } M(G) \setminus e.
\end{align*}
By the deletion result already proved,
\begin{align*}
M(G) \setminus e = M(G \setminus e).
\end{align*}
Under the stated graph convention, $G/e$ is interpreted as $G \setminus e$ when $e$ is a loop. Hence
\begin{align*}
M(G)/e = M(G \setminus e) = M(G/e).
\end{align*}
This completes the proof of both identities.
[/step]