Here's code that follows what you are doing.
First make a raster like your source:
source = raster(nrow = 467, ncol = 805,
xmn=-119, xmx=-85.45833, ymn=13.54167, ymx=33)
crs(source) = "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"
Fill it with zeroes plus a diagonal line of 99s so we can test alignments:
source[] = 0
source[seq(1,ncell(source),by=806)] = 99
plot(source)
Now the target and the projection to the destination:
target <- raster(nrow=2335, ncol=4025, extent(source), crs(source))
dest <- projectRaster(source, target, method='bilinear', tolerance=0.0001)
Sanity check:
> extent(dest) == extent(source)
[1] TRUE
Now its hard to visualise two rasters on top of each other in R so I exported them to QGIS and coloured and overlaid them. Look at this image extreme-zoomed in to the raster in order to show what is going on at the pixel level:
The blue/red is showing five pixels from the source raster - you can see the pixel edges. The fuzzy shading is a transparent overlay of the dest raster. Note how the bilinear filtering is smearing out each pixel into a rough square of pixels, and that they align perfectly with the centre of each source pixel. There are no alignment problems.
WithoutIf I do this with your data or some data you can share that shows your problemand then overlay them (suitably Y-flipped) there's no systematic shift showing up as a colour fringe on one side, I don't see how I can take this any furtherbut there is a slight expansion of the land caused by the smoothing filter, which shows equally on all sides. I've coloured the underlying raster pure blue so it looks even worse than it would if the underlying raster was gray-shaded. This looks totally as expected:
Here's the exact code that produced those rasters:
source=raster("./January6690_mean.tif")
target <- raster(nrow=2335, ncol=4025, extent(source), crs(source))
dest <- projectRaster(source, target, method='bilinear', tolerance=0.0001)
writeRaster(flip(dest, direction='y'), "flipdest.tif")
writeRaster(flip(source, direction='y'), "flipsource.tif")