I do not know when the change was made, but in older GUIDE files, the callbacks were created as character vectors that set up the correct conditions and then called the appropriate function. At some point that changed to use anonymous functions to do the setup instead of character vectors. The above will only work with the ones coded as anonymous functions and not as character vectors.
In the case of GUIDE created GUI that are old enough that the .fig contains character vectors for the callbacks, then you encounter the problem that the character vectors are eval()'d outside of any function, and because of that, any function named in the character vector can only be found if it is a built-in or class method or is the first function in a .m or .p with the same name as the file. Thus in old enough GUIDE GUI, a callback coded as
'handles = guidata(gco); A(''A_pushbutton_Callback'', gco, [], handles)'
would not be able to find A unless there was an A.m .
In newer versions of GUIDE, anonymous functions are used instead of character vectors, and there is more potential for changing how anonymous functions resolve. I would, however, need to research in more detail to figure out how to make the change.
If you attach your A.m and A.fig then I will probe them to see if there is anything unusual in their structure (I wrote some tools to do that.)
One case where opening A in GUIDE and using Save As would not work, is the case where A itself was copied from a different fig .