When you deploy a VDB, (not copying into a directory) using CLI or Admin API, the server makes private copy of the deployment artifact in a separate directory under "data". Even when you copy it, during the startup of the server the artifact goes though a deployment phase that makes the same private copy.
So, now when you issue "addDataRoleMapping" this is working with private internal copy, it saves to it. When you undeploy a VDB, it is equivalent to "DROP DATABASE", you can not expect the permissions defined as database be intact on any future similarly named VDB. So, as along as you did not undeploy the VDB, the mapped role should survive any server restarts.