Failover without scripting issue with PPPoE: why and how to solve ?

I always used this method with natted DSL routers :

As earlier, first we need routes to our checking hosts:

/ip route
add dst-address=Host1A gateway=GW1 scope=10
add dst-address=Host1B gateway=GW1 scope=10
add dst-address=Host2A gateway=GW2 scope=10
add dst-address=Host2B gateway=GW2 scope=10
Then, let's create destinations to "virtual" hops to use in further routes. I'm using 10.1.1.1 and 10.2.2.2 as an example:

/ip route
add dst-address=10.1.1.1 gateway=Host1A scope=10 target-scope=10 check-gateway=ping
add dst-address=10.1.1.1 gateway=Host1B scope=10 target-scope=10 check-gateway=ping
add dst-address=10.2.2.2 gateway=Host2A scope=10 target-scope=10 check-gateway=ping
add dst-address=10.2.2.2 gateway=Host2B scope=10 target-scope=10 check-gateway=ping
And now we may add default routes for clients:

/ip route
add distance=1 gateway=10.1.1.1 routing-mark=ISP1
add distance=2 gateway=10.2.2.2 routing-mark=ISP1
add distance=1 gateway=10.2.2.2 routing-mark=ISP2
add distance=2 gateway=10.1.1.1 routing-mark=ISP2

The problem comes with PPPoE connection:
if gateway=GW1 becomes gateway=pppoe-out1 , Host1A becomes reachable BUT relative virtual host 10.1.1.1 remains unreachable .
10.1.1.1 becomes reachable only if I declare pppoe gateway remote IP address as gateway for Host1A route (instead of pppoe-out1 interface name)
in fact, 10.1.1.1 turns into recursively reachable via

The problem is pppoe remote gateway can change time to time causing 10.1.1.1 thus the entire route to be unreachable despite Host1A is reachable.

Why is this ?
Any workaround please ?

About WHY, I think the cause is described in wiki:

Nexthops cannot be resolved through interface routes (i.e. routes that have interface index instead of gateway address as nexthop). Nexthops also cannot be resolved through unreachable routes (with type B, U, or P) even when they are active. They also do not have nexthops themselves.

About solution… when pppoe connection is established, a dynamic default route is created , showing the nexthop gateway , i.e.:

ADS dst-address=0.0.0.0/0 gateway=80.249.43.22 gateway-status=80.249.43.22 reachable via pppoe-out1 distance=0 scope=30 target-scope=10

How can I use dynamically THAT gateway for previously decribed static routes (the ones to chech Host1A - Host1B) ?? Should I need a script ??

Did you manage to get this to work?