UserControl can directly express rendering information via markup; a Custom Server control can’t.
UserControl does not require the use of the @Register directive; a Custom Server control does require it.
UserControl can make use of script based validation; a Custom Server control can not.
UserControl can represent complete compositate hierarchy; a Custom Server control can not.
Useful resources, Overview of user controls vs. custom controls