In Rudin's "Principles of Mathematical Analysis" he defines the limit of a function as follows.
Let $X$ and $Y$ be metric spaces; suppose $E \subset X$, $f$ maps $E$ into $Y$, and $p$ is a limit point of $E$. Then $$ \lim_{x \to p} f(x) = q $$ if there is a point $q \in Y$ with the following property: For every $\epsilon > 0$ there exists a $\delta > 0$ such that $$ d_Y(f(x),q) < \epsilon $$ for all points $x \in E$ for which $$ 0 < d_X(x,p) < \delta. $$
The functions $d_X$ and $d_Y$ are the metrics on $X$ and $Y$, respectively. He then defines the derivative of a real function as follows.
Let $f$ be defined on $[a,b]$. For any $x \in [a,b]$ form the quotient $$ \phi(t) = \frac{f(t) - f(x)}{t - x} \qquad a < t < b,\, t \neq x, $$ and define $$ f^\prime(x) = \lim_{t \to x}\, \phi(t), \qquad (1) $$ provided this limit exists in accordance with [the above definition]. We thus associate with the function $f$ a function $f^\prime$ whose domain is the set of points $x$ at which the limit (1) exists.
I can't reconcile what's wrong with derivatives at endpoints. As a concrete example, let $f: [0,1] \to \mathbb{R}$ be defined by $f(x) = x^2$. I claim that $f^\prime(0) = 0$. Indeed, the difference quotient is $$ \phi(t) = \frac{t^2 - 0^2}{t - 0} = t $$ and so we need to show $$ \lim_{t \to 0}\, t = 0. $$ Let $\epsilon > 0$ and choose $\delta = \epsilon$. Then for all $t \in [0,1]$ such that $0 < |t| < \delta$ we have $|t| < \epsilon$. Hence $f^\prime(0) = 0$, even though it is at an endpoint of the domain of $f$.
In particular, there's no use to introduce one-sided derivatives. Am I missing something?