I was able to get the list mapping to work with just using @SerializedName for all fields.. no logic around Type was necessary.
Running the code - in step #4 below - through the debugger, I am able to observe that the List<ContentImage> mGalleryImages object populated with the JSON data
Here's an example:
1. The JSON
   {
    "name": "Some House",
    "gallery": [
      {
        "description": "Nice 300sqft. den.jpg",
        "photo_url": "image/den.jpg"
      },
      {
        "description": "Floor Plan",
        "photo_url": "image/floor_plan.jpg"
      }
    ]
  }
2. Java class with the List
public class FocusArea {
    @SerializedName("name")
    private String mName;
    @SerializedName("gallery")
    private List<ContentImage> mGalleryImages;
}
3. Java class for the List items
public class ContentImage {
    @SerializedName("description")
    private String mDescription;
    @SerializedName("photo_url")
    private String mPhotoUrl;
    // getters/setters ..
}
4. The Java code that processes the JSON
    for (String key : focusAreaKeys) {
        JsonElement sectionElement = sectionsJsonObject.get(key);
        FocusArea focusArea = gson.fromJson(sectionElement, FocusArea.class);
    }