My custom node:
public class Base extends Control {
    private ObjectProperty<Node> content;
    public final void setContent(Node value) {
        contentProperty().set(value);
    }
    public final Node getContent() {
        return content == null ? null : content.get();
    }
    public final ObjectProperty<Node> contentProperty() {
        if (content == null) {
            content = new SimpleObjectProperty<Node>(this, "content");
        }
        return content;
    }
}
And here's how it looks like in Scene Builder: https://i.stack.imgur.com/WfDrf.jpg
Original ScrollPane in Scene Builder: https://i.stack.imgur.com/KFPrX.jpg
I don't understand it, the same code is used in ScrollPane and it works there.
Is it a Scene Builder's bug?
