For executing procedures you need explicit direct execute privileges on the procedure. For tables, you can have privileges thru roles.

I guess thats why you can access the table and you can't execute the procedure. Ask the user to give EXEC privileges on procedure using the following command

grant execute on proc_name to XYZ;