I think the term "bind" here is perhaps the cause of consternation.
*Conceptually* the parameter to a sql macro can be likened to a bind, but its not officially a bind variable. You wont find the term "bind" on the SQL_MACRO docs: https://docs.oracle.com/en/database/oracle/oracle-database/21/lnpls/sql_macro-clause.html#GUID-292C3A17-2A4B-4EFB-AD38-68DF6380E5F7
So in that sense, its not a variable and thus there is no issue with it changing. In this case, you've ended up with something more resembling a scalar query.
But definitely an interesting example!