A scene can be best thought of as a composition of its true object set (ie the Nodes it is composed of). Nodes are true OO, because well, they are C++ classes underneath.
A script attached to a Node type should be considered a decoration adorning an object instance.
For example, you are a human (a class) who can put on hiking gear and become a 'hiker'. As such you have some boots, and a tent, and a camping stove etc. So while you can think of yourself as hiker as a class, the script is only an adornment on an instance: A hiking 'script' could also be attached to a humanoid robot and it too could have all the attributes of a hiker and here we note that a Hiker could be-a human or could also be-a robot.
Because GD script is duck taped, binding a script to a node is only really constrained by the base type it can be bound to (ie extends Object, Node or Node2D). Scripts can be bound to any sub-class node of the one its (root-base) script extends.
Thus scene tree objects and the scripts attached to them are not the same thing, say like in Unity where you subclass a traditional Object.
Further scripts can inherent from each other so in that sense scripts can be seen an object oriented, but much of their true nature is related to the specific node type they are bound to.