As far as I'm aware Spatial has never supported synonyms (public or otherwise), at least not in the Object model. You should be able to use the <schemaname>.<tablename> notation however.
Best thing to do is to temporarily give schema B the necesary privileges. After all, how often are you going to migrate?
Oh, and if schema B needs to be able to create spatial indexes, it needs to have create sequence and create table privileges.
Thanks for the answer, but the solution did not work for me.
I tried the <schemaname>.<tablename> notation, but that did not work. I tried SDO_Migrate.to_current('<schemaname>.<tablename>'), SDO_Migrate.to_current(<schemaname>.<tablename>), etc., with quotes, without quotes and other combinations, but none worked.
I am not sure what privileges are required in order to make the migrate work. I cannot however give create table and create indexes privileges to schema B.
The simple answer is - and as you found, you cannot specify the schema name in the tablename input, you have to be logged in (or possibly by using a proxy) as the schema owner. This is a big shortcoming of many spatial functions, as they cannot be run as sys in a script against multiple schemas. Documentation (as of 11.2) says just tablename:
tabname IN VARCHAR2
[, column_name IN VARCHAR2]);
BTW, I am confused at what you are trying to do, and what rights "B" has. Are you trying to say that you want to do this (for whatever reason) as "B" although the data is in "A"?