Your custom solver is doing some of the calculations in double precision (Float64) because your dt and velocity variables are double precision, whereas DifferentialEquations.jl is doing all the calculations in single precision (Float32) because that is the precision of tspan and u0.
If I fix your code to use single precision too, by setting:
velocity = 0.05f0
dt = Float32[100,10,1,0.1,0.01]
then I get results identical to DifferentialEquations.jl:
julia> error_custom_rk4
5-element Vector{Any}:
0.0f0
0.0f0
0.048553467f0
0.4050598f0
2.3095856f0