"What is the difference between Program Stream and Transport Stream, and why do we currently only support the Transport Stream format?" Well, this topic is going to lengthy! I've included more detail than usual, so we'll start with a brief discussion. If you are interested in the detail, I'll provide some of that too.
We are talking about how MPEG-2 is delivered, NOT how it is encoded. So whether a video is Transport Stream or Program Stream has nothing to do with the quality of the video encoding or the MPEG-2 GOP structure. In other words, a beautiful woman can arrive at a party via a car, truck, or bus and she would still be a beautiful woman. So the format for delivery is independent of the content.
Why are there two formats? Well, because there are conflicting applications. If you want to save MPEG-2 to a file on your computer, you are not very concerned about transmission. If you want to transmit MPEG-2, you are not very concerned with file format. Happily, the MPEG-2 standards address both.
Unfortunately, we have some trouble with language. The word "Program" could mean "what I'm watching on TV", or it could mean "a channel", or it could mean "a specific format". We are talking about the format, and to avoid confusion, I'll try to use the word "content" when talking about the MPEG-2 audio/video. But you need to be aware that different industries use the term "Program" in different ways!
It is very important to point out that "Program Stream" has a very specific meaning. MPEG-2 has two different multiplexing schemes: Program Stream and Transport Stream. The Program Streams are mostly used in storage applications. Broadcast usage commonly uses the Transport Stream format. If you have one content channel (one program), it does NOT imply that the stream that carries the program would be a Program Stream. In broadcast usage it would be a so-called Single Program Transport Stream (as defined by ISO 13818-1): a multiplexed collection of concatenated Program Streams without beginning or end. VBrick currently only supports Transport Stream which is superior to Program Stream for streaming applications.
So, which is "better", Transport Stream or Program Stream? The answer is Transport Stream if you are talking about streaming, and Program if you are talking about authoring. Because VBrick supports VBSTAR, VoD, it is necessary for customers to easily convert from one format to another, and we provide the tools to make this easy.
The Detail
The MPEG-2 standard allows two forms of multiplexing:

Combining Elementary Streams from encoders into a Transport Stream (red) or a Program Stream (yellow).
The above illustration shows a classic MPEG system model, where the audio and video codecs are independent. Obviously, VBrick does the audio/video encoding and multiplexing in one unit. To the extent a multichannel Transport Stream is desired, a Transport Stream Mux can assemble the required format.
The Program Stream is widely used in digital video storage devices, and also where the video is reliably transmitted over a network (e.g. video-clip down load). Digital Video Broadcast (DVB) uses the MPEG-2 Transport Stream over a wide variety of under-lying networks. Since both the Program Stream and Transport Stream multiplex a set of PES inputs, interoperability between the two formats may be achieved at the PES level.
A transport stream consists of a sequence of fixed sized transport packet of 188 bytes. Each packet comprises 184 bytes of payload and a 4 byte header. One of the items in this 4 byte header is the 13 bit Packet Identifier (PID) which plays a key role in the operation of the Transport Stream.
The format of the transport stream is described using the figure below (a later section describes the detailed format of the TS packet header). This figure shows two elementary streams sent in the same MPEG-2 transport multiplex. Each packet is associated with a PES through the setting of the PID value in the packet header (the values of 64 and 51 in the figure). The audio packets have been assigned PID 64, and the video packets PID 51 (these are arbitrary, but different values). As is usual, there are more video than audio packets, but you may also note that the two types of packets are not evenly spaced in time. The MPEG-TS is not a time division multiplex. Packets with any PID may be inserted into the TS at any time by the TS multiplexer. If no packets are available, it inserts null packets (denoted by a PID value of 0x1FFF) to retain the specified TS bit rate. The multiplexer also does not synchronise the two PESs, indeed the encoding and decoding delay for each PES may (and usually is) slightly different. A separate process is required to synchronise the two streams.

Although the MPEG TS may be directly used over a wide variety of media (as in DVB), it may also be used over a communication network. It is designed to be robust with short frames, each one being protected by a strong error correction mechanism. It is constructed to match the characteristics of the generic radio or cable channel and expects an uncorrected Bit Error Rate (BER) of better than 10-10. (The different variants of DVB each have their own outer coding and modulation methods designed for the particular environment.)
The MPEG-2 Transport Stream is so called, to signify that it is the input to the Transport Layer in the ISO Open System Interconnection (OSI) seven-layer network reference model. It is not, in itself, a transport layer protocol and no mechanism is provided to ensure the reliable delivery of the transported data. MPEG-2 relies on underlying layers for such services.
The MPEG TS packet size also corresponds to eight Asynchronous Transfer Mode (ATM) cells, assuming 8 byte overhead (associated with the ATM Adaptation Layer (AAL)).
A TS may correspond to a single TV program, or multimedia stream (e.g. with a video PES and an audio PES). This type of TS is normally called a Single Program Transport Stream (SPTS).
An SPTS contains all the information requires to reproduce the encoded TV channel or multimedia stream. It may contain only an audio and video PESs, but in practice there will be other types of PES as well. Each PES shares a common timebase.
In the DVB case, one or more SPTS streams are combined to form a Multiple Program Transport Stream (MPTS). This larger aggregate also contains all the control information (Program Specific Information (PSI)) required to co-ordinate the DVB system, and any other data which is to be sent.

Streams supported by the MPTS
Most transport streams consist of a number of related elementary streams (e.g. the video and audio of a TV program). The decoding of the elementary streams may need to be co-ordinated (synchronised) to ensure that the audio playback is in synchronism with the corresponding video frames. Each stream may be tightly synchronised (usually necessary for digital TV programs, or for digital radio programs), or not synchronised (in the case of programs offering downloading of software or games, as an example). To help synchronisation time stamps are sent in the transport stream.
They are two types of time stamps:
For a user to receive a particular transport stream, the user must first determine the PID being used, and then filter packets which have a matching PID value. Because VBrick sends a Single Program Transport Stream, we have a special capability to automatically detect the PID and automatically configure the decoder to display the correct content. To help the user identify which PID corresponds to which program, a special set of streams, known as Signalling Tables, are transmitted with a description of each program carried within the MPEG-2 Transport Stream. Signalling tables are sent separately to PES, and are not synchronised with the elementary streams (i.e they are an independent control channel).

The tables (called Program Specific Information (PSI) in MPEG-2) consist of a description of the elementary streams which need to be combined to build programs, and a description of the programs. Each PSI table is carried in a sequence of PSI Sections, which may be of variable length (but are usually small, c.f. PES packets). Each section is protected by a CRC (checksum) to verify the integrity of the table being carried. The length of a section allows a decoder to identify the next section in a packet. A PSI section may also be used for down-loading data to a remote site. Tables are sent periodically by including them in the transmitted transport multiplex.
Program Service Information (SI) provided by MPEG-2 and used by DVB
To identify the required PID to de-multiplex a particular PES, the user searches for a description in a particular table, the Program Association Table (PAT). This lists all programs in the multiplex. Each program is associated with a set of PIDs (one for each PES) which correspond to a Program Map Table (PMT) carried as a separate PSI section. There is one PMT per program. DVB also adds a number of additional tables. including those shown below.
Each MPEG-2 TS packet carries 184 byte of payload data prefixed by a 4 byte (32 bit) header.

The header has the following fields:
Two options are possible for inserting PES data into the TS packet payload:

MPEG PES mapping onto the MPEG-2 TS
The presence of an adaptation field is indicated by the adaption field control bits in a transport stream packet. If present, the adaption field directly follows the 4 B packet header, before any user payload data. It may contain a variety of data used for timing and control.
One important item in most adaption packets is the Program Clock Reference (PCR) field.
Another important item is splice_countdown field. This field is used to indicate the end of a series of ES access units. It allows the MPEG-2 TS multiplexer to determine appropriate places in a stream were the video may be spliced to another video source without introducing undesirable disruption to the video replayed by the receiver. Since MPEG-2 video uses inter-frame coding a seamless switch-over between sources can only occur on an I-frame boundary (indicated by a splice count of 0). This feature may, for instance be used to insert a news flash in a scheduled TV transmission.
One other bit of interest here is the transport_private_data_flag
which is set to 1 when the adaptation field contains private data bytes. Another
is the transport_private_data_length field which specifies how many
private data bytes will follow the field. Private data is not allowed to
increase the adaptation field beyond the TS payload size of 184 bytes.
DVB transmission via satellite (often known as DVB-S), defines a series of options for sending MPEG-TS packets over satellite links. The DVB-S standard requires the 188 B (scrambled) transport packets to be protected by 16 bytes of Reed Solomon (RS) coding which VBrick does not currently support.

MPEG Transport Service Encoding Specified by DVB-S
The resultant bit stream is then interleaved and convolutional coding is applied. The level of coding may be selected by the service provider (from 1/2 to 7/8 depending on the intended application and available bandwidth). The digital bit stream is then modulated using Quadrature Phase Shift Keying (QPSK). A typical satellite channel has a 36 MHz bandwidth, which may support transmission at up to 35-40 Mbps (assuming delivery