Here scripting variable is nothing but the variable declared by the id attribute of useBean action.
And ofcourse getProperty and setProperty actions use it.
In findAttribute method, value of 'id' is used as the parameter to it. This explains why scripting variable is created.
Not only can we use this variable name in getProperty and setProperty but we use it in expressions as well as scriptlets in the JSP page.
Type if specified, it defines the type of the scripting variable defined.
It is very clear from specs that type attribute is only for the type of scripting variable which is used to point at the object
When using <jsp:getProperty>, the application server translates <jsp:getProperty> with something like
((Employee) pageContext.getAttribute("p",PageContext.REQUEST_SCOPE)).getName()