Why can't my friend move when he joins my server?
His player probably can't move because of the fact that he needs to check his internet connection, according to another comment. If his camera can move around but you can't, you are probably able to interact with other things, such as breaking ground. If he is frozen on your end but moving for a bit on his end, that is common for a bad connection. So, in all, you should have your friend check your internet connection. Hopefully, he can start moving again!
[Guide for not moving (Java survival mode only)]
Well as stated before the internet connection might have a problem. Minecraft uses a lot of bandwidth so try to minimize the use of other devices and also try to remove excess items and maybe change the graphics and effects. If that doesn't work you may need a new router that runs faster.
Everyone is correct on the problem, but I haven't seen a better solution than fixing his internet (as it can be troublesome if the internet is already at its best).
He is being disconnected due to timeout. He tries to join the world, takes too long to get a stable connection and gets kicked out. One thing you can do is access the server's settings file and change a few options such as Render distance.
Note that changing your render distance locally (Unless you opened the server via lan) will not decrease lag. If he changes on his side regardless if it is lan or dedicated, it will not decrease either. Turning effects off will not either as it is all local-side rendering.
One last thing you can do, and it sadly happens in a lot of servers, is avoid laggy sources like for example huge farms of animals (The ones where the animals constantly push each other), and excess of mobs in loaded areas, redstone circuits that toggle on and off really frequently.
As pointed out by @RyugaGod, if your friend is using wifi over lan connection (Using wifi instead of using a cable to directly connect to the router) could be the source problem of an unstable connection. It is a cheap option and could be worth if it does work.
It's definitely an internet connection. His ping may be too high, so have him try using Ethernet to fix the issue.