None of your electronics can know what your analog altimeter is reading, so you should never expect any electronic source to be identical to that. There can also be significant differences between pressure-based indicated altitutde (on your altimeter) vs. GPS altitude. "Close" between those two altitude sources can mean "within hundreds of feet", depending on various factors. Yes, even for WAAS GPS. Yes, even if your pressure altimeter is "perfectly calibrated". For more details, Google "GPS vs altimeter", and go to town. Here's one source that is reasonably succinct and not too technical: http://www.borgeltinstruments.com/GPSvsPressurealtitude.pdf
As for why two devices getting GPS altitude from the same source might read differently? There are possible explanations, but you will need to provide more information for us to help you figure it out.
First, were you running iFly on both devices, or something different on the iPad?
iFly can display different altitudes via different instruments. Are you sure both devices were showing you the same data?
iFly altitude can be pressure-based (from a device that includes a pressure sensor, like a Stratux; I don't think the SkyguardTWX provides pressure-based data to EFBs, though). Even though it can provide pressure-based data, those data will not be identical to your analog altimeter because of different calibrations.
iFly altitude can be GPS-based, but can come from different sources that may not agree with each other. When an ADSB device with GPS is connected and providing data, iFly usually uses that as its GPS altitude source. However, if that fails, iFly can revert to the built-in GPS in the device it's running on. This could happen due to temporary wifi connection problems or other indications of bad data from the ADSB device, and could affect one connected device but not the other.
iFly can also show AGL (above ground level) altitude, depending on what instruments you have selected for display. If you're used to flying around sea level that can often be essentially the same as other altitude sources, but will diverge once you fly somewhere with any surface elevation.
I think iFly also does some "data smoothing" to filter out noisy readings. This might also cause some differences in displayed altitude between different software using the same input data if you are in a climb or descent, though it should be "pretty close" in level flight.
Photos/screenshots of the exact data you're looking at, and a description of what you were doing at the time (300 ft/min climb, 500 ft/min descent, level flight, etc.) would be helpful in figuring out the discrepancy you're seeing.