Oracle Data Guard:When would data rows exist in the view v$archive_gap?
An archivelog gap simply means that the apply service on the standby site cannot continue because there is a missing sequence between the sequence that was applied and the next sequence that is available (either shipped from the primary or copied manually).

In other words, if sequence 57 was applied at the standby site, but the next sequence available is 59, then the apply service cannot continue until sequence 58 is available (and has been applied).

Resolving gaps largely depends on why there is a gap.  This can happen if an archivelog backup is taken on the primary site with the "delete all input" option and those archivelogs have not been sent to the standby site yet.  Since archivelog backups are not automatically sent to the standby site when the shipping process to re-enabled, the gap is detected on the standby site and the gap is then viewable in v$archive_gap.

In the above example, resolving the gap involves (assumes a Windows environment): 

Manually copying the archivelog backup to the standby site via OS commands (in this example, I copied the archivelog backups into l:\oracle\archivegaps):

Register the archivelog backups with the standby site:

catalog start with 'l:\oracle\archivegaps';


Unpacking the archive files from the archivelog backup:

RUN
{ 
  SET ARCHIVELOG DESTINATION TO 'l:\oracle\archivegaps';
  RESTORE ARCHIVELOG FROM sequence 58 UNTIL sequence 58;
}


Register the archivelogs with the standby site (this step may be optional, as unpacking the archivelogs from the backup may register the archivelogs automatically, but I honestly don't remember).

catalog start with 'l:\oracle\archivegaps';


You may also need to restart the apply service before the gap is resolved:

alter database recover managed standby database cancel; 
alter database recover managed standby database using current logfile disconnect from session;


As for your specific questions:

A1: fal_client and fal_server should have no bearing on whether rows are in v$archive_gap.

A2: A gap is detected on the apply side, not technically the shipping side, so a gap can be detected even if shipping is turned off.  Additionally, if a gap is detected while shipping is on, then shipping is turned off, the gap will still be listed in v$archive_gap until the gap has been resolved.