why does this step exist? it doesn't provide anything extra over throw Exception("message here")?
new hudson.AbortException('message') specifically, which is not whitelisted, and not really something a user would be expected to know about. There is also an open RFE to allow you to set the build status, which would be an even more torturous and non-whitelisted construction if you had to do it by hand.
It should at least log the message
No, it should not. It is up to the catcher to decide whether and how to respond to an exception.
As designed. It throws up an exception. Whoever catches that exception may choose to log it, or not. If the exception terminates the build, the build log shows it. ErrorAction can be used to determine which steps terminated with this exception.