Все контролы, которые вы кидаете в TScrollBox находятся в дополнительном промежуточном контроле TScrollContent. Когда вы удаляете все дочерние узлы TScrollBox, то вы удаляете все сами, стиль и контент, что делать нельзя.
Похожее поведение есть и в TTreeView: При попытке создать дочерние итемы при разворачивании узла дерева, у меня возникает ошибка. В чем может быть проблема?
Поэтому, удалять объекты нужно непосредственно у контента. Это можно сделать так:
type
TOpenScrollBox = class(TScrollBox);
procedure ClearChildren(AScrollBox: TScrollBox);
begin
Assert(AScrollBox <> nil);
TOpenScrollBox(AScrollBox).Content.DeleteChildren;
AScrollBox.Repaint;
end;