Tldr; jump to the $(\ast)$.
The category $Top$ of topological spaces is complete and cocomplete. That is, all limits and colimits exist in the category. On the other hand, the homotopy category $hTop$, formed by quotienting out the (weak) equivalences, is neither complete nor cocomplete. In fact while it has products and coproducts, it has very few other limits or colimits. See here for some examples of pullback/pushout squares which do not exit in $hTop$.
The point is that the strict fibre of an arbitrary map $f:X\rightarrow Y$ over a point $y\in Y$ is the equaliser of the two maps $f,c_y:X\rightrightarrows Y$, where $c_y$ is the constant map at $y$. Now this is not a good homotopical notion, in general, due to the lack of limits in $hTop$. It is a theorem that if a category has equalizers and finite products then it has all finite limits, and we have already noted above that $hTop$ does not even have all pullbacks. Since it has products $hTop$ cannot have all equalisers.
To see exactly what goes wrong consider the fact that the strict fibres of $f:X\rightarrow Y$ over the different points of $Y$ will not in general have the same homotopy type (even keeping within the same path component). For instance consider the map $S^1\rightarrow \mathbb{R}$ induced by projecting onto the first coordinate; the fibres are either empty, have one point, or have two points.
A sufficient condition that all the strict fibres over all points in a given path component have the same homotopy type is that the map $f$ is a fibration. And this is what the homotopy fibre does: it replaces the map $f$ by a fibration $p_f:E(f)\rightarrow Y$ and then takes its strict fibre over a given point. For everything to make sense we require some comparison map $j_f:X\rightarrow E(f)$ which is a homotopy, or at least weak, equivalence, and that everything should be natural - in the mathematical sense - at least up to homotopy.
Note that this 'up-to-homotopy' comparison map $j_f$ is the best we can do, for if $j_f$ were a homeomorphism, then the map $f$ would already be a fibration, and its homotopy fibres would just be its strict fibres. Thus if it were always possible to replace a map by a fibration up to homeomorphism, then there would be no need for homotopy fibres to begin with.
$(\ast)$ Now, the point is that the homotopy fibre of a map $f:X\rightarrow Y$ does not really live in $Top$. Since at best we can ask for the map $j_f$ to be a homotopy equivalence, the homotopy fibre of $f$ really lives in the homotopy category $hTop$ where it makes sense to consider the objects $X$ and $E(f)$ as the same. And now in the homotopy category everything is perfectly canonical, since $X$ and $E(f)$ are the same object as seen through categorical eyes. For example in the path space fibration we no longer have to pick an evaluation, since all these maps are homotopy equivalent, and thus represent the same morphism in $hTop$.
Thus we realise that the object $E(f)$ is nothing but an auxiliary construct. It is a point set lift of the problem in $hTop$ to a problem in $Top$. It allows us to create a more understandable model for the problem by using spaces with points, and maps defined on elements, rather than having everything 'up-to-homotopy'. However there is no canonical way to achieve this. For, just as the strict fibres of an arbitrary map $f:X\rightarrow Y$ may be badly behaved, the fibres of the projection $Top\rightarrow hTop$ are not uniform. Asking for a canonical section of this map is too much.
Thus we content ourselves with mathematically natural (again, up to homotopy) constructions point-set constructions, happy with the knowledge that once we project the problem back to $hTop$ we truly do have something safe and canonical.
Best Answer
This is a very general fact about model categories and homotopy pullbacks, as evidenced by Zhen Lin's comment. It's also proven as a special case of Proposition 4.65 in Hatcher's book. Let me nevertheless spell out the argument precisely for topological spaces.
Define $E_p = \{ (y, \gamma) \in E \times B^{[0,1]} \mid p(y) = \gamma(0) \}$. There's a map (in fact a fibration) $q : E_p \to B$, $(y,\gamma) \mapsto \gamma(1)$, and the homotopy fiber is the fiber $F_p = q^{-1}(b_0)$. The inclusion $$i : F = p^{-1}(b_0) \to F_p$$ is given by $i(y) = (y, \mathrm{cst}_{b_0})$.
Define a homotopy $g_t : E_p \to B$, $(y,\gamma) \mapsto \gamma(t)$. Then $g_0(y, \gamma) = \gamma(0) = p(y)$, so $g_0$ lifts through $p$ by $\bar{g}_0 : E_p \to E$, $\bar{g}_0(y,\gamma) = y$ (i.e. $p \circ \bar{g}_0 = g_0$). Because $E \to B$ is a fibration, by the homotopy lifting property, there is a full lift $\bar{g}_t : E_p \to E$ of $g_t$ through $p$. In other words, $\bar{g}_t$ satisfies the following equation: $$p(\bar{g}_t(y,\gamma)) = \gamma(t).$$
Now restrict everything to the fibers: let $h_t : F_p \to F_p$ be given by $h_t(y,\gamma) = \bigl(\bar{g}_t(y,\gamma), \gamma_{\mid [t,1]} \bigr)$ (because of the previous equation, this is in $F_p$). Then $h_0$ is the identity, whereas $h_1(y,\gamma) = (\bar{g}_1(y,\gamma), \mathrm{cst}_{b_0})$ is in the image of $i : F \to F_p$. And now that $h_t$ is a homotopy between $ih_1$ and the identity, while the restriction of $h_t$ is a homotopy between $h_1i$ and the identity. Thus $F$ and $F_p$ are homotopy equivalent.
Final remark: it's much simpler to prove that $F$ and $F_p$ are weakly homotopy equivalent, because the map $i$ induces easily an isomorphism on all homotopy groups. The square $$\require{AMScd} \begin{CD} E @>>> E_p \\ @VVV @VVV \\ B @>>> B \end{CD}$$ induces a map between the long exact sequences of the respective fibrations: $$\begin{CD} \dots @>>> \pi_n(F) @>>> \pi_n(E) @>>> \pi_n(B) @>>> \pi_{n-1}(E) @>>> \dots \\ @. @VVV @VVV @VVV @VVV @. \\ \dots @>>> \pi_n(F_p) @>>> \pi_n(E_p) @>>> \pi_n(B) @>>> \pi_{n-1}(E) @>>> \dots \end{CD}$$ Since $E$ and $E_p$ are homotopy weakly homotopy equivalent ($PB$ is contractible), and so by the five lemma and induction, the maps $\pi_n(F) \to \pi_n(F_p)$ are isomorphisms.