I'm not that familiar with how to use a BU-353 as a time source, but I can try and help resolve your issues.
1) I use the time and date from the GPRMC message, and relate it to the timestamp of the '$' character in the previous GPGGA message, which has the same time information, using a program in the highest priority on my linux boxes. Is that the right way to do ?That sounds like it should work. Have you tried referencing just one NMEA sentence instead of looking at two different ones?
2) I have noticed that the messages do not come regularly every second; they are frequently delayed, and sometimes are even delayed by many seconds.Each NMEA sentence will output every 1 second. For example, the RMC sentence will output every 1 second and every GGA sentence will output every 1 second, but they output every 1 second independently from each other. At least that's how I understand it. Are you seeing something else?
3) When I take only the time given by the gps receiver for messages that came "in time", and compare it to a stable ntp source, I notice that the difference decreases over time, and then is reset to an initial value, then decreases over time with the same slope, then is reset to the same initial value and so on, giving a sawteeth graph, with a quasi-constant period. Each gps receiver exhibits the same behaviour, but with a different period. The time jump at the reset seems to be the same for all gps receivers: about 100 ms.I'm not sure exactly what kind of time accuracy you can get out of a device like the BU-353. But from my understanding, the BU-353 is not designed for precise time accuracy. If you're looking for more precise time, then I would suggest a device like the MR-350P-S4, which has a 1PPS output synchronized to GPS time: http://www.usglobalsat.com/p-713-mr-350p-s4-bulkhead.aspx
Let me know if you have any further questions. Thanks.