These are boundary conditions and thus the seen behavior is as expected and correct. Now, you can have DirichletConditions
inside the domain: For this you need to generate a mesh with an internal boundary (see documentation here)
Needs["NDSolve`FEM`"]
bmesh = ToBoundaryMesh[
"Coordinates" -> {{0, 0}, {1/2, 0}, {1, 0}, {1, 1}, {1/2, 1}, {0,
1}}, "BoundaryElements" -> {LineElement[{{1, 2}, {2, 3}, {3,
4}, {4, 5}, {5, 6}, {6, 1}}], LineElement[{{2, 5}}]}];
Look the boundary mesh, which now has an internal boundary:
bmesh["Wireframe"]

mesh = ToElementMesh[bmesh];
sol = NDSolveValue[{D[u[x, y], x, x] + D[u[x, y], y, y] - u[x, y] ==
0, u[0.5, y] == 1.0}, u, {x, y} \[Element] mesh]
Plot3D[sol[x, y], {x, y} \[Element] mesh]

You can refine the plot to get a better quality plot like so:
Plot3D[sol[x, y], {x, y} \[Element] mesh, PlotPoints -> 100]
However, it is better to just restrict the domain and have the boundary conditions at the boundary like so:
\[CapitalOmega] = Rectangle[{0, 0}, {1/2, 1}];
sol = NDSolveValue[{D[u[x, y], x, x] + D[u[x, y], y, y] - u[x, y] ==
0, u[0.5, y] == 1.0}, u, {x, y} \[Element] \[CapitalOmega]];
Plot3D[sol[x, y], {x, y} \[Element] \[CapitalOmega]]

See that they are the same:
Plot3D[sol[x, y] - sol2[x, y], {x, y} \[Element] \[CapitalOmega],
PlotRange -> All]
